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