daymodel.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef DAYMODEL_H
  2. #define DAYMODEL_H
  3. #include <QtCore/QAbstractListModel>
  4. #include <QtCore/QVariant>
  5. #include <QtCore/QList>
  6. #include "timeslot.h"
  7. static const int DAYS_FIRST_SLOT = 6;
  8. static const int SLOTS_IN_A_DAY = 20;
  9. class DayModel : public QAbstractListModel
  10. {
  11. Q_OBJECT
  12. public:
  13. enum Roles {
  14. StartTimeRole = Qt::UserRole+1,
  15. ItemDataRole,
  16. HourSpanRole,
  17. SpannedRole,
  18. HourIdRole,
  19. SetStartTimeRole,
  20. SetItemDataRole,
  21. SetHourSpanRole
  22. };
  23. static QHash<int, QByteArray> roleNames();
  24. public:
  25. explicit DayModel(const QString& name, QObject *parent = 0);
  26. virtual ~DayModel();
  27. // Exposed to QML for changing the Cell text.
  28. Q_INVOKABLE void setItemData(int index, QString itemData);
  29. Q_INVOKABLE void mergeDown(int index);
  30. Q_INVOKABLE void mergeUp(int index);
  31. Q_INVOKABLE void split(int index);
  32. public: // From QAbstractListModel
  33. int rowCount(const QModelIndex &parent = QModelIndex()) const;
  34. QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
  35. QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;
  36. Qt::ItemFlags flags( const QModelIndex & index ) const;
  37. bool setData( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole );
  38. public slots:
  39. bool setHourSpan(int index, int hourSpan);
  40. void handleItemChange();
  41. private: // Methods
  42. void setSpanStatus(bool spanned, int index, int parentIndex);
  43. QModelIndex indexFromItem(const Timeslot* item) const;
  44. private:
  45. QString m_dayName;
  46. QList<Timeslot*> m_items;
  47. };
  48. #endif // DAYMODEL_H