Mixxx

/home/maxime/Projets/Mixxx/1.10/mixxx/src/widget/wtracktableview.h

Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines