![]() |
Mixxx
|
00001 #ifndef BROWSETABLEMODEL_H 00002 #define BROWSETABLEMODEL_H 00003 00004 #include <QStandardItemModel> 00005 #include <QMimeData> 00006 00007 #include "library/trackmodel.h" 00008 #include "library/dao/trackdao.h" 00009 #include "library/trackcollection.h" 00010 #include "recording/recordingmanager.h" 00011 00012 //constants 00013 const int COLUMN_FILENAME = 0; 00014 const int COLUMN_ARTIST = 1; 00015 const int COLUMN_TITLE = 2; 00016 const int COLUMN_ALBUM = 3; 00017 const int COLUMN_TRACK_NUMBER = 4; 00018 const int COLUMN_YEAR = 5; 00019 const int COLUMN_GENRE = 6; 00020 const int COLUMN_COMMENT = 7; 00021 const int COLUMN_DURATION = 8; 00022 const int COLUMN_BPM = 9; 00023 const int COLUMN_KEY = 10; 00024 const int COLUMN_TYPE = 11; 00025 const int COLUMN_BITRATE = 12; 00026 const int COLUMN_LOCATION = 13; 00027 00028 /* 00029 * The BrowseTable models displays tracks 00030 * of given directory on the HDD. 00031 * Usage: Recording and Browse feature. 00032 */ 00033 class BrowseTableModel : public QStandardItemModel, public virtual TrackModel { 00034 Q_OBJECT 00035 00036 public: 00037 BrowseTableModel(QObject* parent, TrackCollection* pTrackCollection, RecordingManager* pRec); 00038 virtual ~BrowseTableModel(); 00039 void setPath(QString absPath); 00040 //reimplemented from TrackModel class 00041 virtual TrackPointer getTrack(const QModelIndex& index) const; 00042 virtual QString getTrackLocation(const QModelIndex& index) const; 00043 virtual int getTrackId(const QModelIndex& index) const; 00044 TrackModel::CapabilitiesFlags getCapabilities() const; 00045 virtual const QLinkedList<int> getTrackRows(int trackId) const; 00046 virtual void search(const QString& searchText); 00047 virtual void removeTrack(const QModelIndex& index); 00048 virtual void removeTracks(const QModelIndexList& indices); 00049 virtual bool addTrack(const QModelIndex& index, QString location); 00050 virtual QMimeData* mimeData(const QModelIndexList &indexes) const; 00051 virtual const QString currentSearch() const; 00052 virtual bool isColumnInternal(int); 00053 virtual void moveTrack(const QModelIndex&, const QModelIndex&); 00054 virtual QItemDelegate* delegateForColumn(const int); 00055 virtual bool isColumnHiddenByDefault(int column); 00056 virtual const QList<int>& searchColumns() const; 00057 virtual Qt::ItemFlags flags(const QModelIndex &index) const; 00058 virtual bool setData(const QModelIndex& index, const QVariant& value, int role=Qt::EditRole); 00059 00060 public slots: 00061 void slotClear(BrowseTableModel*); 00062 void slotInsert(const QList< QList<QStandardItem*> >&, BrowseTableModel*); 00063 00064 private: 00065 void removeTracks(QStringList trackLocations); 00066 00067 void addSearchColumn(int index); 00068 bool isTrackInUse(QString& file) const; 00069 QList<int> m_searchColumns; 00070 QString m_current_path; 00071 TrackCollection* m_pTrackCollection; 00072 RecordingManager* m_pRecordingManager; 00073 }; 00074 00075 #endif