Signals | Public Member Functions | Public Attributes | Friends

QxtScheduleInternalItem Class Reference

#include <qxtscheduleview_p.h>

List of all members.

Signals

void geometryChanged (QxtScheduleInternalItem *item, QVector< QRect > oldGeometry)

Public Member Functions

 QxtScheduleInternalItem (QxtScheduleView *parent, QModelIndex index, QVector< QRect > geometries=QVector< QRect >())
bool setData (QVariant data, int role)
QVariant data (int role) const
int visualStartTableOffset () const
int visualEndTableOffset () const
int startTableOffset () const
int endTableOffset () const
void setStartTableOffset (int iOffset)
int rows () const
void setRowsUsed (int rows)
QxtScheduleViewparentView () const
void startMove ()
void resetMove ()
void stopMove ()
bool contains (const QPoint &pt)
void setGeometry (const QVector< QRect > geo)
QModelIndex modelIndex () const
void setDirty (bool state=true)
QVector< QRect > geometry () const

Public Attributes

bool m_moving
bool isDirty
int m_iModelRow
QVector< QRect > m_geometries
QVector< QRect > m_SavedGeometries
QVector< QPixmap > m_cachedParts

Friends

class QxtScheduleView

Detailed Description

Definition at line 55 of file qxtscheduleview_p.h.


Constructor & Destructor Documentation

QxtScheduleInternalItem::QxtScheduleInternalItem ( QxtScheduleView parent,
QModelIndex  index,
QVector< QRect >  geometries = QVector<QRect>() 
)

Definition at line 556 of file qxtscheduleview_p.cpp.

References m_geometries, m_moving, rows(), and startTableOffset().

        : QObject(parent), m_iModelRow(index.row()), m_geometries(geometries)
{
    m_moving = false;
    if (parent)
    {
        if (index.isValid())
        {
            if (m_geometries.empty())
            {
                int startOffset = this->startTableOffset();
                int endOffset = startOffset + this->rows() - 1;
                m_geometries = parent->qxt_d().calculateRangeGeometries(startOffset, endOffset);
            }
        }
    }
}

Member Function Documentation

bool QxtScheduleInternalItem::contains ( const QPoint &  pt )

Definition at line 707 of file qxtscheduleview_p.cpp.

References m_geometries.

Referenced by QxtScheduleViewPrivate::internalItemAt().

{
    QVectorIterator<QRect> iterator(this->m_geometries);
    while (iterator.hasNext())
    {
        if (iterator.next().contains(pt))
            return true;
    }
    return false;
}
QVariant QxtScheduleInternalItem::data ( int  role ) const

Definition at line 621 of file qxtscheduleview_p.cpp.

References modelIndex().

Referenced by rows(), and startTableOffset().

{
    if (modelIndex().isValid())
        return modelIndex().data(role);
    return QVariant();
}
int QxtScheduleInternalItem::endTableOffset (  ) const

Definition at line 654 of file qxtscheduleview_p.cpp.

References rows(), and startTableOffset().

Referenced by visualEndTableOffset().

{
    return startTableOffset() + rows() - 1;
}
QVector< QRect > QxtScheduleInternalItem::geometry (  ) const

Definition at line 729 of file qxtscheduleview_p.cpp.

References m_geometries.

Referenced by QxtScheduleViewPrivate::itemGeometryChanged(), and visualStartTableOffset().

{
    return this->m_geometries;
}
void QxtScheduleInternalItem::geometryChanged ( QxtScheduleInternalItem item,
QVector< QRect >  oldGeometry 
) [signal]

Referenced by setGeometry().

QModelIndex QxtScheduleInternalItem::modelIndex (  ) const

Definition at line 754 of file qxtscheduleview_p.cpp.

References m_iModelRow, QxtScheduleView::model(), and parentView().

Referenced by data(), QxtScheduleView::paintEvent(), qxtScheduleItemLessThan(), and setData().

{
    QModelIndex indx;
    if (parentView() && parentView()->model())
    {
        indx = parentView()->model()->index(this->m_iModelRow, 0);
    }
    return indx;
}
QxtScheduleView * QxtScheduleInternalItem::parentView (  ) const
void QxtScheduleInternalItem::resetMove (  )

Definition at line 741 of file qxtscheduleview_p.cpp.

References m_moving, m_SavedGeometries, and setGeometry().

{
    this->setGeometry(this->m_SavedGeometries);
    this->m_SavedGeometries.clear();
    m_moving = false;
}
int QxtScheduleInternalItem::rows (  ) const

Definition at line 676 of file qxtscheduleview_p.cpp.

References QxtScheduleView::currentZoomDepth(), data(), Qxt::ItemDurationRole, parentView(), and Qxt::Second.

Referenced by QxtScheduleView::dataChanged(), endTableOffset(), QxtScheduleViewPrivate::handleItemConcurrency(), and QxtScheduleInternalItem().

{
    if (parentView() && parentView()->model())
    {
        int iNumSecs = data(Qxt::ItemDurationRole).toInt();
        int zoomDepth = parentView()->currentZoomDepth(Qxt::Second);

        //the length of the current item does not fit in the view
        //so we have to align it to the nearest boundaries
        if (iNumSecs % zoomDepth)
        {
            int lower = iNumSecs / zoomDepth * zoomDepth;
            int upper = lower + zoomDepth;

            return (iNumSecs - lower >= upper - iNumSecs ? (upper / zoomDepth) : (lower / zoomDepth));

        }
        return (iNumSecs / zoomDepth);
    }
    return -1;
}
bool QxtScheduleInternalItem::setData ( QVariant  data,
int  role 
)

Definition at line 612 of file qxtscheduleview_p.cpp.

References QxtScheduleView::model(), modelIndex(), and parentView().

Referenced by setRowsUsed(), and setStartTableOffset().

{
    if (parentView() && parentView()->model())
    {
        return parentView()->model()->setData(modelIndex(), data, role);
    }
    return false;
}
void QxtScheduleInternalItem::setDirty ( bool  state = true ) [inline]

Definition at line 85 of file qxtscheduleview_p.h.

References isDirty.

Referenced by QxtScheduleView::dataChanged(), and QxtScheduleView::paintEvent().

    {
        isDirty = state;
    }
void QxtScheduleInternalItem::setGeometry ( const QVector< QRect >  geo )

Definition at line 718 of file qxtscheduleview_p.cpp.

References geometryChanged(), m_geometries, and QxtScheduleViewHeaderModel::parent().

Referenced by QxtScheduleView::dataChanged(), and resetMove().

{
    if (!this->parent())
        return;

    QVector<QRect> oldGeo = this->m_geometries;
    this->m_geometries.clear();
    this->m_geometries = geo;
    emit geometryChanged(this, oldGeo);
}
void QxtScheduleInternalItem::setRowsUsed ( int  rows )
void QxtScheduleInternalItem::setStartTableOffset ( int  iOffset )

Definition at line 659 of file qxtscheduleview_p.cpp.

References Qxt::ItemStartTimeRole, parentView(), and setData().

{
    if (parentView() && parentView()->model())
    {
        setData(parentView()->qxt_d().offsetToUnixTime(iOffset), Qxt::ItemStartTimeRole);
    }
}
void QxtScheduleInternalItem::startMove (  )

Definition at line 734 of file qxtscheduleview_p.cpp.

References m_geometries, m_moving, and m_SavedGeometries.

{
    //save old geometry before we start to move
    this->m_SavedGeometries = this->m_geometries;
    m_moving = true;
}
int QxtScheduleInternalItem::startTableOffset (  ) const

Definition at line 628 of file qxtscheduleview_p.cpp.

References QxtScheduleView::currentZoomDepth(), data(), Qxt::ItemStartTimeRole, parentView(), and Qxt::Second.

Referenced by QxtScheduleView::dataChanged(), endTableOffset(), QxtScheduleViewPrivate::handleItemConcurrency(), QxtScheduleInternalItem(), and visualStartTableOffset().

{
    if (parentView() && parentView()->model())
    {
        int startTime = data(Qxt::ItemStartTimeRole).toInt();
        int zoomDepth = parentView()->currentZoomDepth(Qxt::Second);

        qint32 offset = startTime - parentView()->qxt_d().m_startUnixTime;

        //the start of the current item does not fit in the view
        //so we have to align it to the nearest boundaries
        if (offset % zoomDepth)
        {
            int lower = offset / zoomDepth * zoomDepth;
            int upper = lower + zoomDepth;

            offset = (offset - lower >= upper - offset ? upper : lower);

            return parentView()->qxt_d().unixTimeToOffset(offset + parentView()->qxt_d().m_startUnixTime);
        }

        return parentView()->qxt_d().unixTimeToOffset(startTime);
    }
    return -1;
}
void QxtScheduleInternalItem::stopMove (  )

Definition at line 748 of file qxtscheduleview_p.cpp.

References m_moving, and m_SavedGeometries.

{
    this->m_SavedGeometries.clear();
    m_moving = false;
}
int QxtScheduleInternalItem::visualEndTableOffset (  ) const

returns the currently VISUAL offset (changes when a item moves)

Definition at line 598 of file qxtscheduleview_p.cpp.

References endTableOffset(), m_geometries, m_moving, and parentView().

{
    if (m_geometries.size() == 0 || !parentView())
        return -1;

    //are we in a move?
    if (!m_moving)
        return endTableOffset();

    QRect rect = m_geometries[m_geometries.size()-1];
    int endTableOffset = parentView()->qxt_d().pointToOffset(parentView()->mapToViewport(rect.bottomRight()));
    return endTableOffset;
}
int QxtScheduleInternalItem::visualStartTableOffset (  ) const

returns the currently VISUAL offset (changes when a item moves)

Definition at line 582 of file qxtscheduleview_p.cpp.

References geometry(), m_geometries, m_moving, parentView(), and startTableOffset().

Referenced by qxtScheduleItemLessThan().

{
    if (m_geometries.size() == 0 || !parentView())
        return -1;

    //are we in a move?
    if (!m_moving)
        return startTableOffset();

    int offset = parentView()->qxt_d().pointToOffset(parentView()->mapToViewport((this->geometry()[0].topLeft())));
    return offset;
}

Friends And Related Function Documentation

friend class QxtScheduleView [friend]

Definition at line 58 of file qxtscheduleview_p.h.


Member Data Documentation

Definition at line 97 of file qxtscheduleview_p.h.

Referenced by QxtScheduleView::paintEvent(), and setDirty().

Definition at line 101 of file qxtscheduleview_p.h.

Referenced by QxtScheduleView::paintEvent().

Definition at line 100 of file qxtscheduleview_p.h.

Referenced by resetMove(), startMove(), and stopMove().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines