Documents > BPS V2 C++ API
bpstablemodel.h
Go to the documentation of this file.
00001 
00004 #ifndef BPSTABLEMODEL_H
00005 #define BPSTABLEMODEL_H
00006 
00007 #include "bpsgui_global.h"
00008 #include "bpstableoptions.h"
00009 #include <QAbstractItemModel>
00010 
00011 class BpsTable;
00012 class BpsTableItem;
00013 
00020 class BPSGUI_EXPORT BpsTableModel : public QAbstractItemModel
00021 {
00022     Q_OBJECT
00023     BPS_PRIVATE(BpsTableModel)
00024     friend class BpsTableItemPrivate;
00025 
00026 public:
00037     BpsTableModel(BpsTable* aTable, QObject* aParent);
00038 
00040     virtual ~BpsTableModel();
00041     virtual Qt::ItemFlags flags(const QModelIndex& aIndex) const;
00042     virtual Qt::DropActions supportedDropActions() const;
00043     virtual bool hasChildren(const QModelIndex& aParent = QModelIndex()) const;
00044     virtual bool canFetchMore(const QModelIndex& aParent = QModelIndex()) const;
00045     virtual void fetchMore(const QModelIndex& aParent = QModelIndex());
00046     virtual int rowCount(const QModelIndex& aParent = QModelIndex()) const;
00047     virtual int columnCount(const QModelIndex& aParent = QModelIndex()) const;
00048     virtual QVariant data(const QModelIndex& aIndex, int aRole = Qt::DisplayRole) const;
00049     virtual bool setData (const QModelIndex& aIndex, const QVariant& aValue, int aRole = Qt::EditRole);
00050     virtual QVariant headerData(int aSection, Qt::Orientation aOrientation, int aRole) const;
00051     virtual QModelIndex index(int aRow, int aColumn, const QModelIndex& aParent = QModelIndex()) const;
00052     virtual QModelIndex parent(const QModelIndex &aIndex) const;
00053     virtual bool removeRows(int aRow, int aCount, const QModelIndex &aParent = QModelIndex());
00054     virtual QStringList mimeTypes() const;
00055     virtual QMimeData* mimeData(const QModelIndexList& aIndexes) const;
00056     virtual bool dropMimeData (const QMimeData* aData, Qt::DropAction aAction, int aRow, int aColumn, const QModelIndex& aParent);
00058 
00062     bool isReadOnly() const;
00063 
00070     void setReadOnly(bool aReadOnly);
00071 
00075     BpsTable* table() const;
00076 
00084     BpsTableItem* item(const QModelIndex& aIndex) const;
00085 
00092     void loadAdditionalFields(BpsTableItem* aItem);
00093 
00116     void addOptions(
00117         const QString& aMappingTable, 
00118         const QString& aMasterColumn, 
00119         const QString& aAttribColumn,
00120         const QString& aAttribTable, 
00121         const QString& aNameColumn
00122     );
00123 
00127     QStringList optionsMappingTables() const;
00128 
00134     QString optionsAttribTable(const QString& aMappingTable) const;
00135 
00141     QString optionsNameColumn(const QString& aMappingTable) const;
00142 
00147     void loadOptions(BpsTableItem* aItem);
00148 
00163     void addSlaveTable(BpsTable* aTable, const QString& aRefColumn);
00164 
00168     QStringList slaveTables() const;
00169 
00174     BpsTable* slaveTable(const QString& aName) const;
00175 
00180     void loadSlaveModels(BpsTableItem* aItem);
00181 
00186     bool isTree() const;
00187 
00193     void enableTree(bool aEnable);
00194 
00199     QVariant key(const QModelIndex& aIndex) const;
00200 
00206     QVariantList allKeys(const QModelIndex& aParent = QModelIndex()) const;
00207 
00213     QModelIndex firstIndex(const QModelIndex& aParent = QModelIndex());
00214 
00221     QModelIndex keyIndex(const QVariant& aKey) const;
00222 
00231     QModelIndex addItem(const QModelIndex& aParent = QModelIndex(), bool aSignal = true);
00232 
00239     void moveItem(const QModelIndex& aSrc, int aDstRow, const QModelIndex& aDstParent = QModelIndex());
00240 
00248     void deleteItem(const QModelIndex& aIndex);
00249 
00257     void deleteItems(const QModelIndexList& aIndexList);
00258 
00276     bool save(QString& aMessage, QModelIndexList& aIndexes, QString& aColumn);
00277 
00282     void copy(const QModelIndexList& aIndexList);
00283 
00288     void paste(const QModelIndex& aParent = QModelIndex());
00289 
00293     bool canAdd() const;
00294 
00298     bool canEdit() const;
00299 
00303     bool canDelete() const;
00304 
00308     bool canPaste() const;
00309 
00313     bool isModified() const;
00314 
00318     QString keyToolTipLabel() const;
00319 
00324     void setKeyToolTipLabel(const QString& aLabel);
00325 
00326 public slots:
00327 
00332     void refresh();
00333 
00338     void setEmpty();
00339 
00340 signals:
00341 
00346     void modified(bool aModified);
00347 
00352     void unmodified(bool aUnmodified);
00353 
00359     void itemsAdded(const QModelIndexList& aIndexes);
00360 
00361 public slots:
00362 
00367     void setDropKeyboardModifiers(Qt::KeyboardModifiers aModifiers);
00368 
00370 private:
00371     BpsTableModel(BpsTable* aTable, const QString& aRefColumn, BpsTableItem* aMasterItem);
00372     void itemChanged(BpsTableItem* aItem);
00373     void setModified(bool aModified);
00375 };
00376 
00377 #endif // BPSTABLEMODEL_H