![]() |
Mixxx
|
00001 #ifndef CRATEFEATURE_H 00002 #define CRATEFEATURE_H 00003 00004 #include <QSqlTableModel> 00005 #include <QModelIndex> 00006 #include <QAction> 00007 00008 #include "library/libraryfeature.h" 00009 #include "library/cratetablemodel.h" 00010 00011 #include "treeitemmodel.h" 00012 #include "configobject.h" 00013 00014 class TrackCollection; 00015 00016 class CrateFeature : public LibraryFeature { 00017 Q_OBJECT 00018 public: 00019 CrateFeature(QObject* parent, TrackCollection* pTrackCollection, ConfigObject<ConfigValue>* pConfig); 00020 virtual ~CrateFeature(); 00021 00022 QVariant title(); 00023 QIcon getIcon(); 00024 00025 bool dropAccept(QUrl url); 00026 bool dropAcceptChild(const QModelIndex& index, QUrl url); 00027 bool dragMoveAccept(QUrl url); 00028 bool dragMoveAcceptChild(const QModelIndex& index, QUrl url); 00029 00030 void bindWidget(WLibrarySidebar* sidebarWidget, 00031 WLibrary* libraryWidget, 00032 MixxxKeyboard* keyboard); 00033 00034 TreeItemModel* getChildModel(); 00035 signals: 00036 void showPage(const QUrl& page); 00037 00038 public slots: 00039 void activate(); 00040 void activateChild(const QModelIndex& index); 00041 void onRightClick(const QPoint& globalPos); 00042 void onRightClickChild(const QPoint& globalPos, QModelIndex index); 00043 void onLazyChildExpandation(const QModelIndex& index); 00044 00045 void slotCreateCrate(); 00046 void slotDeleteCrate(); 00047 void slotRenameCrate(); 00048 void slotToggleCrateLock(); 00049 void slotImportPlaylist(); 00050 void slotExportPlaylist(); 00051 00052 private: 00053 void constructChildModel(); 00054 void clearChildModel(); 00055 00056 TrackCollection* m_pTrackCollection; 00057 QAction *m_pCreateCrateAction; 00058 QAction *m_pDeleteCrateAction; 00059 QAction *m_pRenameCrateAction; 00060 QAction *m_pLockCrateAction; 00061 QAction *m_pImportPlaylistAction; 00062 QAction *m_pExportPlaylistAction; 00063 QSqlTableModel m_crateListTableModel; 00064 CrateTableModel m_crateTableModel; 00065 QModelIndex m_lastRightClickedIndex; 00066 TreeItemModel m_childModel; 00067 ConfigObject<ConfigValue>* m_pConfig; 00068 }; 00069 00070 #endif /* CRATEFEATURE_H */