LibraryControl::LibraryControl(QObject* pParent) : QObject(pParent), m_pLibraryWidget(NULL), m_pSidebarWidget(NULL), m_numDecks("[Master]", "num_decks"), m_numSamplers("[Master]", "num_samplers"), m_numPreviewDecks("[Master]", "num_preview_decks") { slotNumDecksChanged(m_numDecks.get()); slotNumSamplersChanged(m_numSamplers.get()); slotNumPreviewDecksChanged(m_numPreviewDecks.get()); connect(&m_numDecks, SIGNAL(valueChanged(double)), this, SLOT(slotNumDecksChanged(double))); connect(&m_numSamplers, SIGNAL(valueChanged(double)), this, SLOT(slotNumSamplersChanged(double))); connect(&m_numPreviewDecks, SIGNAL(valueChanged(double)), this, SLOT(slotNumPreviewDecksChanged(double))); // Make controls for library navigation and track loading. Leaking all these // CO's, but oh well? m_pSelectNextTrack = new ControlPushButton(ConfigKey("[Playlist]", "SelectNextTrack")); connect(m_pSelectNextTrack, SIGNAL(valueChanged(double)), this, SLOT(slotSelectNextTrack(double))); m_pSelectPrevTrack = new ControlPushButton(ConfigKey("[Playlist]", "SelectPrevTrack")); connect(m_pSelectPrevTrack, SIGNAL(valueChanged(double)), this, SLOT(slotSelectPrevTrack(double))); m_pSelectNextPlaylist = new ControlPushButton(ConfigKey("[Playlist]", "SelectNextPlaylist")); connect(m_pSelectNextPlaylist, SIGNAL(valueChanged(double)), this, SLOT(slotSelectNextSidebarItem(double))); m_pSelectPrevPlaylist = new ControlPushButton(ConfigKey("[Playlist]", "SelectPrevPlaylist")); connect(m_pSelectPrevPlaylist, SIGNAL(valueChanged(double)), this, SLOT(slotSelectPrevSidebarItem(double))); m_pToggleSidebarItem = new ControlPushButton(ConfigKey("[Playlist]", "ToggleSelectedSidebarItem")); connect(m_pToggleSidebarItem, SIGNAL(valueChanged(double)), this, SLOT(slotToggleSelectedSidebarItem(double))); m_pLoadSelectedIntoFirstStopped = new ControlPushButton(ConfigKey("[Playlist]","LoadSelectedIntoFirstStopped")); connect(m_pLoadSelectedIntoFirstStopped, SIGNAL(valueChanged(double)), this, SLOT(slotLoadSelectedIntoFirstStopped(double))); m_pSelectTrackKnob = new ControlPushButton(ConfigKey("[Playlist]","SelectTrackKnob")); connect(m_pSelectTrackKnob, SIGNAL(valueChanged(double)), this, SLOT(slotSelectTrackKnob(double))); }
LibraryControl::LibraryControl(Library* pLibrary) : QObject(pLibrary), m_pLibrary(pLibrary), m_pLibraryWidget(nullptr), m_pSidebarWidget(nullptr), m_numDecks("[Master]", "num_decks", this), m_numSamplers("[Master]", "num_samplers", this), m_numPreviewDecks("[Master]", "num_preview_decks", this) { slotNumDecksChanged(m_numDecks.get()); slotNumSamplersChanged(m_numSamplers.get()); slotNumPreviewDecksChanged(m_numPreviewDecks.get()); m_numDecks.connectValueChanged(this, &LibraryControl::slotNumDecksChanged); m_numSamplers.connectValueChanged(this, &LibraryControl::slotNumSamplersChanged); m_numPreviewDecks.connectValueChanged(this, &LibraryControl::slotNumPreviewDecksChanged); // Controls to navigate vertically within currently focused widget (up/down buttons) m_pMoveUp = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "MoveUp")); m_pMoveDown = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "MoveDown")); m_pMoveVertical = std::make_unique<ControlEncoder>(ConfigKey("[Library]", "MoveVertical"), false); connect(m_pMoveUp.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveUp(double))); connect(m_pMoveDown.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveDown(double))); connect(m_pMoveVertical.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveVertical(double))); // Controls to navigate vertically within currently focused widget (up/down buttons) m_pScrollUp = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "ScrollUp")); m_pScrollDown = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "ScrollDown")); m_pScrollVertical = std::make_unique<ControlEncoder>(ConfigKey("[Library]", "ScrollVertical"), false); connect(m_pScrollUp.get(), SIGNAL(valueChanged(double)),this, SLOT(slotScrollUp(double))); connect(m_pScrollDown.get(), SIGNAL(valueChanged(double)),this, SLOT(slotScrollDown(double))); connect(m_pScrollVertical.get(), SIGNAL(valueChanged(double)),this, SLOT(slotScrollVertical(double))); // Controls to navigate horizontally within currently selected item (left/right buttons) m_pMoveLeft = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "MoveLeft")); m_pMoveRight = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "MoveRight")); m_pMoveHorizontal = std::make_unique<ControlEncoder>(ConfigKey("[Library]", "MoveHorizontal"), false); connect(m_pMoveLeft.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveLeft(double))); connect(m_pMoveRight.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveRight(double))); connect(m_pMoveHorizontal.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveHorizontal(double))); // Control to navigate between widgets (tab/shit+tab button) m_pMoveFocusForward = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "MoveFocusForward")); m_pMoveFocusBackward = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "MoveFocusBackward")); m_pMoveFocus = std::make_unique<ControlEncoder>(ConfigKey("[Library]", "MoveFocus"), false); connect(m_pMoveFocusForward.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveFocusForward(double))); connect(m_pMoveFocusBackward.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveFocusBackward(double))); connect(m_pMoveFocus.get(), SIGNAL(valueChanged(double)),this, SLOT(slotMoveFocus(double))); // Control to "goto" the currently selected item in focused widget (context dependent) m_pGoToItem = std::make_unique<ControlPushButton>(ConfigKey("[Library]", "GoToItem")); connect(m_pGoToItem.get(), SIGNAL(valueChanged(double)), this, SLOT(slotGoToItem(double))); // Auto DJ controls m_pAutoDjAddTop = std::make_unique<ControlPushButton>(ConfigKey("[Library]","AutoDjAddTop")); connect(m_pAutoDjAddTop.get(), SIGNAL(valueChanged(double)), this, SLOT(slotAutoDjAddTop(double))); m_pAutoDjAddBottom = std::make_unique<ControlPushButton>(ConfigKey("[Library]","AutoDjAddBottom")); connect(m_pAutoDjAddBottom.get(), SIGNAL(valueChanged(double)), this, SLOT(slotAutoDjAddBottom(double))); // Font sizes m_pFontSizeKnob = std::make_unique<ControlObject>( ConfigKey("[Library]", "font_size_knob"), false); connect(m_pFontSizeKnob.get(), SIGNAL(valueChanged(double)), this, SLOT(slotFontSize(double))); m_pFontSizeDecrement = std::make_unique<ControlPushButton>( ConfigKey("[Library]", "font_size_decrement")); connect(m_pFontSizeDecrement.get(), SIGNAL(valueChanged(double)), this, SLOT(slotDecrementFontSize(double))); m_pFontSizeIncrement = std::make_unique<ControlPushButton>( ConfigKey("[Library]", "font_size_increment")); connect(m_pFontSizeIncrement.get(), SIGNAL(valueChanged(double)), this, SLOT(slotIncrementFontSize(double))); /// Deprecated controls m_pSelectNextTrack = std::make_unique<ControlPushButton>(ConfigKey("[Playlist]", "SelectNextTrack")); connect(m_pSelectNextTrack.get(), SIGNAL(valueChanged(double)), this, SLOT(slotSelectNextTrack(double))); m_pSelectPrevTrack = std::make_unique<ControlPushButton>(ConfigKey("[Playlist]", "SelectPrevTrack")); connect(m_pSelectPrevTrack.get(), SIGNAL(valueChanged(double)), this, SLOT(slotSelectPrevTrack(double))); // Ignoring no-ops is important since this is for +/- tickers. m_pSelectTrack = std::make_unique<ControlObject>(ConfigKey("[Playlist]","SelectTrackKnob"), false); connect(m_pSelectTrack.get(), SIGNAL(valueChanged(double)), this, SLOT(slotSelectTrack(double))); m_pSelectNextSidebarItem = std::make_unique<ControlPushButton>(ConfigKey("[Playlist]", "SelectNextPlaylist")); connect(m_pSelectNextSidebarItem.get(), SIGNAL(valueChanged(double)), this, SLOT(slotSelectNextSidebarItem(double))); m_pSelectPrevSidebarItem = std::make_unique<ControlPushButton>(ConfigKey("[Playlist]", "SelectPrevPlaylist")); connect(m_pSelectPrevSidebarItem.get(), SIGNAL(valueChanged(double)), this, SLOT(slotSelectPrevSidebarItem(double))); // Ignoring no-ops is important since this is for +/- tickers. m_pSelectSidebarItem = std::make_unique<ControlObject>(ConfigKey("[Playlist]", "SelectPlaylist"), false); connect(m_pSelectSidebarItem.get(), SIGNAL(valueChanged(double)), this, SLOT(slotSelectSidebarItem(double))); m_pToggleSidebarItem = std::make_unique<ControlPushButton>(ConfigKey("[Playlist]", "ToggleSelectedSidebarItem")); connect(m_pToggleSidebarItem.get(), SIGNAL(valueChanged(double)), this, SLOT(slotToggleSelectedSidebarItem(double))); m_pLoadSelectedIntoFirstStopped = std::make_unique<ControlPushButton>(ConfigKey("[Playlist]","LoadSelectedIntoFirstStopped")); connect(m_pLoadSelectedIntoFirstStopped.get(), SIGNAL(valueChanged(double)), this, SLOT(slotLoadSelectedIntoFirstStopped(double))); ControlDoublePrivate::insertAlias(ConfigKey("[Playlist]", "AutoDjAddTop"), ConfigKey("[Library]", "AutoDjAddTop")); ControlDoublePrivate::insertAlias(ConfigKey("[Playlist]", "AutoDjAddBottom"), ConfigKey("[Library]", "AutoDjAddBottom")); }