![]() |
Mixxx
|
00001 #ifndef WTRACKTABLEVIEW_H 00002 #define WTRACKTABLEVIEW_H 00003 00004 #include <QAbstractItemModel> 00005 #include <QSortFilterProxyModel> 00006 00007 #include "configobject.h" 00008 #include "trackinfoobject.h" 00009 #include "library/libraryview.h" 00010 #include "library/searchthread.h" 00011 #include "library/trackmodel.h" // Can't forward declare enums 00012 #include "widget/wlibrarytableview.h" 00013 00014 class ControlObjectThreadMain; 00015 class DlgTrackInfo; 00016 class TrackCollection; 00017 00018 const QString WTRACKTABLEVIEW_VSCROLLBARPOS_KEY = "VScrollBarPos"; 00019 const QString LIBRARY_CONFIGVALUE = "[Library]"; 00022 class WTrackTableView : public WLibraryTableView 00023 { 00024 Q_OBJECT 00025 public: 00026 WTrackTableView(QWidget* parent, ConfigObject<ConfigValue>* pConfig, 00027 TrackCollection* pTrackCollection); 00028 virtual ~WTrackTableView(); 00029 void contextMenuEvent(QContextMenuEvent * event); 00030 void onSearchStarting(); 00031 void onSearchCleared(); 00032 void onSearch(const QString& text); 00033 void onShow(); 00034 virtual void keyPressEvent(QKeyEvent* event); 00035 virtual void loadSelectedTrack(); 00036 virtual void loadSelectedTrackToGroup(QString group); 00037 void disableSorting(); 00038 00039 public slots: 00040 void loadTrackModel(QAbstractItemModel* model); 00041 void slotMouseDoubleClicked(const QModelIndex &); 00042 00043 private slots: 00044 void slotRemove(); 00045 void slotShowTrackInfo(); 00046 void slotNextTrackInfo(); 00047 void slotPrevTrackInfo(); 00048 void slotSendToAutoDJ(); 00049 void slotReloadTrackMetadata(); 00050 void addSelectionToPlaylist(int iPlaylistId); 00051 void addSelectionToCrate(int iCrateId); 00052 void loadSelectionToGroup(QString group); 00053 void doSortByColumn(int headerSection); 00054 00055 private: 00056 void showTrackInfo(QModelIndex index); 00057 void createActions(); 00058 void dragMoveEvent(QDragMoveEvent * event); 00059 void dragEnterEvent(QDragEnterEvent * event); 00060 void dropEvent(QDropEvent * event); 00061 00062 // Mouse move event, implemented to hide the text and show an icon instead 00063 // when dragging 00064 void mouseMoveEvent(QMouseEvent *pEvent); 00065 00066 // Returns the current TrackModel, or returns NULL if none is set. 00067 TrackModel* getTrackModel(); 00068 bool modelHasCapabilities(TrackModel::CapabilitiesFlags capability); 00069 00070 ConfigObject<ConfigValue> * m_pConfig; 00071 TrackCollection* m_pTrackCollection; 00072 00073 QSignalMapper m_loadTrackMapper; 00074 00075 DlgTrackInfo* m_pTrackInfo; 00076 QModelIndex currentTrackInfoIndex; 00077 00078 SearchThread m_searchThread; 00079 00080 ControlObjectThreadMain* m_pNumSamplers; 00081 ControlObjectThreadMain* m_pNumDecks; 00082 00083 // Context menu machinery 00084 QMenu *m_pMenu, *m_pPlaylistMenu, *m_pCrateMenu, *m_pSamplerMenu; 00085 QSignalMapper m_playlistMapper, m_crateMapper, m_deckMapper, m_samplerMapper; 00086 00087 // Reload Track Metadata Action: 00088 QAction *m_pReloadMetadataAct; 00089 00090 // Send to Auto-DJ Action 00091 QAction *m_pAutoDJAct; 00092 00093 // Remove from table 00094 QAction *m_pRemoveAct; 00095 00096 // Show track-editor action 00097 QAction *m_pPropertiesAct; 00098 }; 00099 00100 #endif