/[svn]/qsampler/trunk/src/qsamplerInstrumentList.h
ViewVC logotype

Diff of /qsampler/trunk/src/qsamplerInstrumentList.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1464 by capela, Thu Nov 1 17:14:21 2007 UTC revision 2829 by capela, Thu Jul 23 17:32:31 2015 UTC
# Line 1  Line 1 
1  // qsamplerInstrumentList.h  // qsamplerInstrumentList.h
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2003-2007, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2003-2015, rncbc aka Rui Nuno Capela. All rights reserved.
5     Copyright (C) 2007, Christian Schoenebeck     Copyright (C) 2007, Christian Schoenebeck
6    
7     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
# Line 23  Line 23 
23  #ifndef __qsamplerInstrumentList_h  #ifndef __qsamplerInstrumentList_h
24  #define __qsamplerInstrumentList_h  #define __qsamplerInstrumentList_h
25    
26  #include <QListWidget>  #include <QTreeView>
 #include <QListWidgetItem>  
 //#include <qheader.h>  
 #include <QAbstractTableModel>  
 #include <QItemDelegate>  
27    
28  #include <lscp/client.h>  namespace QSampler {
29    
30  #include <string.h>  class Instrument;
31    
32  #include "qsamplerInstrument.h"  //-------------------------------------------------------------------------
33    // QSampler:InstrumentListModel - data model for MIDI prog mappings
 // Forward declarations.  
 //class qsamplerInstrument;  
 //class qsamplerInstrumentList;  
   
 class QAction;  
   
   
 //----------------------------------------------------------------------  
 // class qsamplerInstrumentGroup -- custom group list view item.  
34  //  //
35    
36  class qsamplerInstrumentGroup : public QListWidgetItem  class InstrumentListModel : public QAbstractItemModel
37  {  {
38  public:          Q_OBJECT
39    
40          // Constructors.  public:
         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;  
41    
42          QListWidget  *listView() const;          // Constructor.
43          qsamplerInstrumentGroup *groupItem() const;          InstrumentListModel(QObject *pParent = NULL);
44    
45          // To show up whether its open or not.          // Destructor.
46          virtual void setOpen(bool bOpen);          ~InstrumentListModel();
47    
48          // To virtually distinguish between list view items.          // Overridden methods from subclass(es)
49          virtual int rtti() const;          int rowCount(const QModelIndex& parent) const;
50  };          int columnCount(const QModelIndex& parent) const;
51    
52            QVariant data(const QModelIndex& index, int role) const;
53            QVariant headerData(int section, Qt::Orientation orientation,
54                    int role = Qt::DisplayRole) const;
55    
56            // Map selector.
57            void setMidiMap(int iMidiMap);
58            int midiMap() const;
59    
60  //----------------------------------------------------------------------          // Own methods
61  // class qsamplerInstrumentItem -- custom file list view item.          const Instrument *addInstrument(int iMap, int iBank, int iProg);
62  //          void removeInstrument(Instrument *pInstrument);
63            void updateInstrument(Instrument *pInstrument);
64            void resortInstrument(Instrument *pInstrument);
65    
66  class qsamplerInstrumentItem : public qsamplerInstrumentGroup          // General reloader.
67  {          void refresh();
 public:  
68    
69          // Constructors.          // Make the following method public
70          qsamplerInstrumentItem(QListWidget *pListView,          void beginReset();
71                  qsamplerInstrument *pInstrument,          void endReset();
                 QListWidgetItem *pItemAfter = NULL);  
         qsamplerInstrumentItem(qsamplerInstrumentGroup *pGroupItem,  
                 qsamplerInstrument *pInstrument);  
         // Default destructor.  
         virtual ~qsamplerInstrumentItem();  
72    
73          // To virtually distinguish between list view items.          // Map clear.
74          virtual int rtti() const;          void clear();
75    
76          // Payload accessor.  protected:
         qsamplerInstrument *instrument() const;  
77    
78          // View refreshment.          QModelIndex index(int row, int col, const QModelIndex& parent) const;
79          void update();          QModelIndex parent(const QModelIndex& child) const;
80    
81  private:  private:
82    
83          // File item full path.          typedef QList<Instrument *> InstrumentList;
84          qsamplerInstrument *m_pInstrument;          typedef QMap<int, InstrumentList> InstrumentMap;
85    
86            InstrumentMap m_instruments;
87    
88            // Current map selection.
89            int m_iMidiMap;
90  };  };
91    
92    
93  //----------------------------------------------------------------------------  //-------------------------------------------------------------------------
94  // qsamplerInstrumentList -- MIDI instrument list view.  // QSampler::InstrumentListView - list view for MIDI prog mappings
95  //  //
96    
97  #if 0  class InstrumentListView : public QTreeView
 class qsamplerInstrumentList : public QListView  
98  {  {
99          Q_OBJECT          Q_OBJECT
100    
101  public:  public:
102    
103          // Constructor.          // Constructor.
104          qsamplerInstrumentList(QWidget *pParent, const char *pszName = NULL);          InstrumentListView(QWidget *pParent = NULL);
105          // Default destructor.  
106          ~qsamplerInstrumentList();          // Destructor.
107            ~InstrumentListView();
         // 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;  
108    
109          // Map selector.          // Map selector.
110          void setMidiMap(int iMidiMap);          void setMidiMap(int iMidiMap);
111          int midiMap() const;          int midiMap() const;
112    
113          // List actions accessors.          // Own methods
114          QAction *newGroupAction() const;          const Instrument *addInstrument(int iMap, int iBank, int iProg);
115          QAction *newItemAction() const;          void removeInstrument(Instrument *pInstrument);
116          QAction *editItemAction() const;          void updateInstrument(Instrument *pInstrument);
117          QAction *renameAction() const;          void resortInstrument(Instrument *pInstrument);
         QAction *deleteAction() const;  
         QAction *refreshAction() const;  
   
 signals:  
   
         // Instrument map/session change signal.  
         void instrumentsChanged();  
   
 public slots:  
118    
119          // General reloader.          // General reloader.
120          void refresh();          void refresh();
121    
 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);  
   
122  private:  private:
123    
124          // List view actions.          // Instance variables.
125          QAction *m_pNewGroupAction;          InstrumentListModel *m_pListModel;
         QAction *m_pNewItemAction;  
         QAction *m_pEditItemAction;  
         QAction *m_pRenameAction;  
         QAction *m_pDeleteAction;  
         QAction *m_pRefreshAction;  
   
         // Current map selection.  
         int m_iMidiMap;  
126  };  };
 #endif  
127    
 class MidiInstrumentsModel : public QAbstractTableModel {  
 Q_OBJECT  
 public:  
     MidiInstrumentsModel(QObject* parent = 0);  
   
     // overridden methods from subclass(es)  
     int rowCount(const QModelIndex &parent) const;  
     int columnCount(const QModelIndex &parent) const;  
     QVariant data(const QModelIndex &index, int role) const;  
     QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;  
   
     qsamplerInstrument* addInstrument(int iMap = 0, int iBank = -1, int iProg = -1);  
   
     // Map selector.  
     void setMidiMap(int iMidiMap);  
     int midiMap() const;  
   
 signals:  
     // Instrument map/session change signal.  
     void instrumentsChanged();  
   
 public slots:  
     // General reloader.  
     void refresh();  
   
 private:  
     typedef QMap<int, QList<qsamplerInstrument> > InstrumentsMap;  
   
     // Current map selection.  
     int m_iMidiMap;  
   
     InstrumentsMap instruments;  
 };  
   
 class MidiInstrumentsDelegate : public QItemDelegate {  
 Q_OBJECT  
 public:  
     MidiInstrumentsDelegate(QObject* parent = 0);  
   
     QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option,  
                           const QModelIndex& index) const;  
   
     void setEditorData(QWidget* editor, const QModelIndex& index) const;  
     void setModelData(QWidget* editor, QAbstractItemModel* model,  
                       const QModelIndex& index) const;  
   
     void updateEditorGeometry(QWidget* editor,  
         const QStyleOptionViewItem& option, const QModelIndex& index) const;  
 };  
128    
129    } // namespace QSampler
130    
131  #endif  // __qsamplerInstrumentList_h  #endif  // __qsamplerInstrumentList_h
132    

Legend:
Removed from v.1464  
changed lines
  Added in v.2829

  ViewVC Help
Powered by ViewVC