Hi Albert,
Hey Jan,

I'm just in the middle of my exam period so I don't have enough time to
fully review your patch yet, but for now, have you tried using this:

moveCursor(QAbstractItemView::MovePrevious, Qt::NoModifier);

(ie. MovePrevious instead of MoveUp, etc.)

Looks good though, hopefully we can get this working...

Albert

I had tried all kinds of cursor instructions already, and failed. Maybe moveCursor() does something entirely different. By trial and error I arrived at the new patch (see attachment). It actually works fine.

I'm currently polishing the patch so that it doesn't segfault when no track is activated, and some other minor stuff. So, don't bother testing this patch, it'll still change a bit. I just wanted to tell you that the basic problem is solved.

Good luck on your exams!

- Ján

Index: mixxx/src/wtracktableview.cpp
===================================================================
--- mixxx/src/wtracktableview.cpp	(revision 1670)
+++ mixxx/src/wtracktableview.cpp	(working copy)
@@ -421,6 +421,24 @@
     m_pTrack = pTrack;
 }
 
+void WTrackTableView::moveNext()
+{
+    QModelIndex c = currentIndex();
+
+    setCurrentIndex(c.child(c.row()+1, c.column()));
+    if (currentIndex().row() == -1) setCurrentIndex(c);
+    selectRow(currentIndex().row());
+}
+
+void WTrackTableView::movePrevious()
+{
+    QModelIndex c = currentIndex();
+
+    setCurrentIndex(c.child(c.row()-1, c.column()));
+    if (currentIndex().row() == -1) setCurrentIndex(c);
+    selectRow(currentIndex().row());
+}
+
 void WTrackTableView::slotLoadPlayer1()
 {
     if (!m_pTable) //Browse mode
Index: mixxx/src/track.h
===================================================================
--- mixxx/src/track.h	(revision 1670)
+++ mixxx/src/track.h	(working copy)
@@ -99,6 +99,12 @@
     void slotNextTrackPlayer2(double);
     /** Slot for loading previous track in player 1 */
     void slotPrevTrackPlayer2(double);
+
+    void slotCurrTrackCh1(double);
+    void slotCurrTrackCh2(double);
+    void slotMoveNextTrack(double);
+    void slotMovePrevTrack(double);
+
     /** Returns pointer to active playlist */
     TrackPlaylist *getActivePlaylist();
     /** Slot for sending track to Play Queue */
@@ -147,6 +153,8 @@
     ControlObjectThreadMain *m_pPlayButtonCh1, *m_pPlayButtonCh2;
     /** Pointer to ControlObject for next/prev buttons */
     ControlObjectThreadMain *m_pNextTrackCh1, *m_pNextTrackCh2, *m_pPrevTrackCh1, *m_pPrevTrackCh2;
+    /** Pointer to ControlObject for playlist navigation/loading into Players */
+    ControlObjectThreadMain *m_pCurrTrackCh1, *m_pCurrTrackCh2, *m_pMoveNextTrack, *m_pMovePrevTrack;
     /** Pointer to ControlObject for play position */
     ControlObjectThreadMain *m_pPlayPositionCh1, *m_pPlayPositionCh2;
     /** Pointer to waveform summary generator */
Index: mixxx/src/wtracktableview.h
===================================================================
--- mixxx/src/wtracktableview.h	(revision 1670)
+++ mixxx/src/wtracktableview.h	(working copy)
@@ -77,6 +77,9 @@
     /**Current WTrackTableModel**/
     WTrackTableModel *m_pTable;
 
+    void moveNext();
+    void movePrevious();
+
 private:
     /** Config object*/
     ConfigObject<ConfigValue> *m_pConfig;
Index: mixxx/src/track.cpp
===================================================================
--- mixxx/src/track.cpp	(revision 1670)
+++ mixxx/src/track.cpp	(working copy)
@@ -157,6 +157,16 @@
     connect(m_pNextTrackCh2, SIGNAL(valueChanged(double)), this, SLOT(slotNextTrackPlayer2(double)));
     connect(m_pPrevTrackCh2, SIGNAL(valueChanged(double)), this, SLOT(slotPrevTrackPlayer2(double)));
 
+    // Make controls for tracklist navigation and current track loading
+    m_pCurrTrackCh1 = new ControlObjectThreadMain(new ControlObject(ConfigKey("[Channel1]","CurrTrack")));
+    m_pCurrTrackCh2 = new ControlObjectThreadMain(new ControlObject(ConfigKey("[Channel2]","CurrTrack")));
+    m_pMoveNextTrack = new ControlObjectThreadMain(new ControlObject(ConfigKey("[Playlist]","MoveNextTrack")));
+    m_pMovePrevTrack = new ControlObjectThreadMain(new ControlObject(ConfigKey("[Playlist]","MovePrevTrack")));
+    connect(m_pCurrTrackCh1, SIGNAL(valueChanged(double)), this, SLOT(slotCurrTrackCh1(double)));
+    connect(m_pCurrTrackCh2, SIGNAL(valueChanged(double)), this, SLOT(slotCurrTrackCh2(double)));
+    connect(m_pMoveNextTrack, SIGNAL(valueChanged(double)), this, SLOT(slotMoveNextTrack(double)));
+    connect(m_pMovePrevTrack, SIGNAL(valueChanged(double)), this, SLOT(slotMovePrevTrack(double)));
+
     TrackPlaylist::setTrack(this);
 
 	m_pView->m_pTrackTableView->repaintEverything();
@@ -764,6 +774,39 @@
     //m_pEndOfTrackCh2->slotSet(0.);
 }
 
+void Track::slotCurrTrackCh1(double v)
+{
+    QModelIndex index;
+    TrackInfoObject *pTrack;
+    if ((v > 1.0) && m_pView->m_pTrackTableView->m_pTable)
+    {
+        index = m_pView->m_pTrackTableView->currentIndex();
+        pTrack = m_pView->m_pTrackTableView->m_pTable->m_pTrackPlaylist->getTrackAt(index.row());
+        slotLoadPlayer1(pTrack);
+    }
+}
+
+void Track::slotCurrTrackCh2(double v)
+{
+    QModelIndex index;
+    TrackInfoObject *pTrack;
+    if ((v > 1.0) && m_pView->m_pTrackTableView->m_pTable) {
+        index = m_pView->m_pTrackTableView->currentIndex();
+        pTrack = m_pView->m_pTrackTableView->m_pTable->m_pTrackPlaylist->getTrackAt(index.row());
+        slotLoadPlayer2(pTrack);
+    }
+}
+
+void Track::slotMoveNextTrack(double v)
+{
+    if (v > 1.0) m_pView->m_pTrackTableView->moveNext();
+}
+
+void Track::slotMovePrevTrack(double v)
+{
+    if (v > 1.0) m_pView->m_pTrackTableView->movePrevious();
+}
+
 void Track::slotNextTrackPlayer1(double v)
 {
     if (v && m_pTrackPlayer1)
-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to