--- qsampler/trunk/src/qsamplerInstrumentList.h 2007/11/01 17:14:21 1464 +++ qsampler/trunk/src/qsamplerInstrumentList.h 2007/11/19 21:08:18 1492 @@ -25,7 +25,6 @@ #include #include -//#include #include #include @@ -35,175 +34,11 @@ #include "qsamplerInstrument.h" -// Forward declarations. -//class qsamplerInstrument; -//class qsamplerInstrumentList; -class QAction; - - -//---------------------------------------------------------------------- -// class qsamplerInstrumentGroup -- custom group list view item. -// - -class qsamplerInstrumentGroup : public QListWidgetItem -{ -public: - - // Constructors. - qsamplerInstrumentGroup(QListWidget *pListView, - const QString& sName, QListWidgetItem *pItemAfter = NULL); - qsamplerInstrumentGroup(qsamplerInstrumentGroup *pGroupItem, - const QString& sName); - // Default destructor. - virtual ~qsamplerInstrumentGroup(); - - // Instance accessors. - void setName(const QString& sName); - QString name() const; - - QListWidget *listView() const; - qsamplerInstrumentGroup *groupItem() const; - - // To show up whether its open or not. - virtual void setOpen(bool bOpen); - - // To virtually distinguish between list view items. - virtual int rtti() const; -}; - - -//---------------------------------------------------------------------- -// class qsamplerInstrumentItem -- custom file list view item. -// - -class qsamplerInstrumentItem : public qsamplerInstrumentGroup -{ -public: - - // Constructors. - qsamplerInstrumentItem(QListWidget *pListView, - qsamplerInstrument *pInstrument, - QListWidgetItem *pItemAfter = NULL); - qsamplerInstrumentItem(qsamplerInstrumentGroup *pGroupItem, - qsamplerInstrument *pInstrument); - // Default destructor. - virtual ~qsamplerInstrumentItem(); - - // To virtually distinguish between list view items. - virtual int rtti() const; - - // Payload accessor. - qsamplerInstrument *instrument() const; - - // View refreshment. - void update(); - -private: - - // File item full path. - qsamplerInstrument *m_pInstrument; -}; - - -//---------------------------------------------------------------------------- -// qsamplerInstrumentList -- MIDI instrument list view. +//------------------------------------------------------------------------- +// MidiInstrumentsModel - data model for MIDI prog mappings (used for QTableView) // -#if 0 -class qsamplerInstrumentList : public QListView -{ - Q_OBJECT - -public: - - // Constructor. - qsamplerInstrumentList(QWidget *pParent, const char *pszName = NULL); - // Default destructor. - ~qsamplerInstrumentList(); - - // QListViewItem::rtti() return values. - enum ItemType { Group = 1001, Item = 1002 }; - - // Add a new group/file item, optionally under a given group. - qsamplerInstrumentGroup *addGroup(const QString& sName, - qsamplerInstrumentGroup *pParentGroup = NULL); - qsamplerInstrumentItem *addItem( - qsamplerInstrument *pInstrument, - qsamplerInstrumentGroup *pParentGroup = NULL); - - // Find a group/file item, given its name. - qsamplerInstrumentGroup *findGroup(const QString& sName) const; - qsamplerInstrumentItem *findItem( - qsamplerInstrument *pInstrument) const; - - // Map selector. - void setMidiMap(int iMidiMap); - int midiMap() const; - - // List actions accessors. - QAction *newGroupAction() const; - QAction *newItemAction() const; - QAction *editItemAction() const; - QAction *renameAction() const; - QAction *deleteAction() const; - QAction *refreshAction() const; - -signals: - - // Instrument map/session change signal. - void instrumentsChanged(); - -public slots: - - // General reloader. - void refresh(); - -protected slots: - - // Add a new group item below the current one. - void newGroupSlot(); - // Add a instrument item below the current one. - void newItemSlot(); - // Change current instrument item. - void editItemSlot(); - // Rename current group/item. - void renameSlot(); - // Remove current group/item. - void deleteSlot(); - - // In-place selection slot. - void selectionChangedSlot(); - - // In-place activation slot. - void activatedSlot(QListWidgetItem *pListItem); - - // In-place aliasing slot. - void renamedSlot(QListWidgetItem *pItem); - -protected: - - // Find and return the nearest group item... - qsamplerInstrumentGroup *groupItem(QListWidgetItem *pListItem) const; - - // Context menu request event handler. - void contextMenuEvent(QContextMenuEvent *pContextMenuEvent); - -private: - - // List view actions. - QAction *m_pNewGroupAction; - QAction *m_pNewItemAction; - QAction *m_pEditItemAction; - QAction *m_pRenameAction; - QAction *m_pDeleteAction; - QAction *m_pRefreshAction; - - // Current map selection. - int m_iMidiMap; -}; -#endif - class MidiInstrumentsModel : public QAbstractTableModel { Q_OBJECT public: @@ -215,7 +50,13 @@ QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + // make the following method public + QAbstractTableModel::reset; + + // own methods qsamplerInstrument* addInstrument(int iMap = 0, int iBank = -1, int iProg = -1); + void removeInstrument(const qsamplerInstrument& instrument); + void resort(const qsamplerInstrument instrument); // Map selector. void setMidiMap(int iMidiMap); @@ -238,6 +79,12 @@ InstrumentsMap instruments; }; + +//------------------------------------------------------------------------- +// MidiInstrumentsDelegate - table cell renderer for MIDI prog mappings +// (doesn't actually do anything ATM, but is already there for a future +// cell editor widget implementation) + class MidiInstrumentsDelegate : public QItemDelegate { Q_OBJECT public: