Go to the documentation of this file.00001
00004 #ifndef BPSTABLEITEM_H
00005 #define BPSTABLEITEM_H
00006
00007 #include "bpsgui_global.h"
00008 #include "bpstableoptions.h"
00009 #include <QSqlRecord>
00010 #include <QVariantMap>
00011
00012 class BpsTableModel;
00013
00017 class BPSGUI_EXPORT BpsTableItem
00018 {
00019 BPS_PRIVATE(BpsTableItem)
00020 friend class BpsTableModel;
00021 friend class BpsTableModelPrivate;
00022
00023 public:
00027 enum Status {
00028 StatusSaved = 0,
00029 StatusEdited = 1,
00030 StatusAdded = 2,
00031 StatusDeleted = 3
00032 };
00033
00037 enum CacheIndex {
00038 CacheDisplayColumnStart = 1000000
00039 };
00040
00044 QVariant key() const;
00045
00049 Status status() const;
00050
00056 QVariant value(const QString& aField) const;
00057
00064 bool setValue(const QString& aField, const QVariant& aValue);
00065
00074 QVariant cache(const QString& aField) const;
00075
00081 void setCache(const QString& aField, const QVariant& aValue);
00082
00093 QVariant cache(int aIndex) const;
00094
00105 void setCache(int aIndex, const QVariant& aValue);
00106
00112 BpsTableOptions options(const QString& aMappingTable) const;
00113
00120 bool setOptions(const QString& aMappingTable, const BpsTableOptions& aOptions);
00121
00126 void addFields(const QSqlRecord& aRecord);
00127
00133 bool hasField(const QString& aField);
00134
00140 bool hasOptions(const QString& aTable);
00141
00147 BpsTableModel* slaveModel(const QString& aTable);
00148
00150 private:
00151 BpsTableItem(BpsTableModel* aModel, const QSqlRecord& aRecord);
00152 BpsTableItem(BpsTableItem* aOther, bool aCopy);
00153 BpsTableItem(BpsTableItem* aOther);
00154 ~BpsTableItem();
00155
00156 void checkStatus();
00157 void setSaved();
00158 void setAdded();
00159 void setDeleted();
00160
00161 BpsTableItem* parent() const;
00162 QVariant parentKey() const;
00163 int index() const;
00164
00165 QSqlRecord record() const;
00166 int fieldCount() const;
00167
00168 QVariantMap values() const;
00169 QVariantMap changedValues() const;
00170 QVariant value(int aIndex) const;
00171 bool setValue(int aIndex, const QVariant& aValue);
00172
00173 void addOptions(const QString& aTable, const BpsTableOptions& aOptions);
00174 QList<QString> optionTables() const;
00175 BpsTableOptions oldOptions(const QString& aTable) const;
00176
00177 int childCount() const;
00178 BpsTableItem* childItem(int aIndex);
00179 int childIndex(BpsTableItem* aChild) const;
00180
00181 void insertChild(int aIndex, BpsTableItem* aChild);
00182 void appendChild(BpsTableItem* aChild);
00183 BpsTableItem* takeChild(int aIndex);
00184
00185 bool childrenLoaded() const;
00186 void setChildrenLoaded(bool aLoaded);
00187
00188 void addSlaveModel(BpsTableModel* aModel);
00189 QList<BpsTableModel*> slaveModels() const;
00191 };
00192
00193 #endif // BPSTABLEITEM_H