// $Id: SctSumFuncAssignSpec.hpp,v 1.7 2011/05/12 02:11:56 philw Exp $ // // Data definition for the SCT Slot Aggregation Summary Function "set" // operation and default specification (used when Slots are added to an // SCT). // // class SctSumFuncAssignSpec // class SctSumFuncAssignSpec::Item // //-- #ifndef SctSumFuncAssignSpecINCLUDED #define SctSumFuncAssignSpecINCLUDED #ifndef SctSumFuncSpecINCLUDED #include "SctSumFuncSpec.hpp" #endif #ifndef SlotColRefINCLUDED #include "SlotColRef.hpp" #endif #ifndef UnitTypesINCLUDED #include "UnitTypes.hpp" #endif #ifndef cwReturnStatusINCLUDED #include "cwReturnStatus.hpp" #endif #include #include class SctSumFuncAssignSpec { public: class Item; // declared below private: // Persistent Fields QList _itemList; // Item List // Non-persistent Fields; Not part of comparison. int _temporaryChangeCnt; public: SctSumFuncAssignSpec(); ~SctSumFuncAssignSpec(); // ignores non-persistent fields bool operator== (const SctSumFuncAssignSpec& rhs) const; // Internal Change Tracking -- Diagnostics int temporaryChangeCnt() const { return _temporaryChangeCnt; } void clearTemporaryChangeCnt() { _temporaryChangeCnt = 0; } // Factory Value Support static const SctSumFuncAssignSpec& factoryValueRef(); void setFactoryValue(); bool isFactoryValue() const; // Supply Name Item List const QList& itemList() const { return _itemList; } void setItemList (const QList&); int itemListCount() const { return _itemList.count(); } // Default Summary Function SctSumFuncSpec defaultSumFuncSpec() const; // Serialization QString serialize (int indentSpaces) const; okstat loadSerialCmd (const QString&); // Assess Slot SctSumFuncSpec functionForSlot (const SlotColRef&) const; }; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- class SctSumFuncAssignSpec::Item { private: // Does turning ON the Unit Type or Slot Name filter force // the other filter off? (i.e. "Radio Button" behavior). enum { FiltersExclusive = 1 }; // true bool _unitTypeFilterEnabled; bool _slotNameFilterEnabled; unit_type _unitType; // NOUNITS == any QString _slotNamePart; // empty == any SctSumFuncSpec _sumFuncSpec; // Non-persistent fields bool _isLastItem; int _slotCount; public: Item (bool isLast=false); Item (unit_type, SctSumFuncSpec, bool isLast=false); ~Item(); bool unitTypeFilterEnabled() const { return _unitTypeFilterEnabled; } bool slotNameFilterEnabled() const { return _slotNameFilterEnabled; } void setUnitTypeFilterEnabled (bool); void setSlotNameFilterEnabled (bool); unit_type unitType() const { return (_unitType); } // NOUNITS == any QString slotNamePart() const { return (_slotNamePart); } // empty == any void setUnitType (unit_type, bool setEnabled=false); void setSlotNamePart (const QString&, bool setEnabled=false); unit_type activeUnitType() const { return (_unitTypeFilterEnabled ? _unitType : NOUNITS); } QString activeSlotNamePart() const { return (_slotNameFilterEnabled ? _slotNamePart : QString ("")); } SctSumFuncSpec sumFuncSpec() const { return (_sumFuncSpec); } void setSumFuncSpec (SctSumFuncSpec); int slotCount() const { return _slotCount; } void clearSlotCount() { _slotCount = 0; } bool matchesSlot (const SlotColRef&) const; bool countSlotMatch (const SlotColRef&); // if match, increments slotCount bool isLastItem() const { return _isLastItem; } void setIsLastItem (bool isLast); // Equality Operators bool equals (const Item& rhs) const; // ignores non-persist fields bool operator== (const Item& rhs) const; bool operator!= (const Item& rhs) const; // Serialization QString saveAsString() const; okstat loadFromString (const QString&); }; #endif // SctSumFuncAssignSpecINCLUDED //--- (end SctSumFuncAssignSpec.hpp) ---