/**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** GNU Lesser General Public License Usage ** This file may be used under the terms of the GNU Lesser General Public ** License version 2.1 as published by the Free Software Foundation and ** appearing in the file LICENSE.LGPL included in the packaging of this ** file. Please review the following information to ensure the GNU Lesser ** General Public License version 2.1 requirements will be met: ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU General ** Public License version 3.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of this ** file. Please review the following information to ensure the GNU General ** Public License version 3.0 requirements will be met: ** http://www.gnu.org/copyleft/gpl.html. ** ** Other Usage ** Alternatively, this file may be used in accordance with the terms and ** conditions contained in a signed written agreement between you and Nokia. ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef ABSTRACTITEMCONTAINER_H #define ABSTRACTITEMCONTAINER_H #include #include "gvbwidget.h" class QGraphicsWidget; class AbstractItemView; class AbstractViewItem; class AbstractItemContainer : public GvbWidget { Q_OBJECT public: AbstractItemContainer(int bufferSize, QGraphicsWidget *parent=0); virtual ~AbstractItemContainer(); virtual void addItem(const QModelIndex &index); virtual void removeItem(const QModelIndex &index); virtual void setItemView(AbstractItemView *view); virtual void setItemPrototype(AbstractViewItem *ptype); virtual void reset(); virtual int itemCount() const; virtual AbstractViewItem* itemAt(const int row) const; AbstractViewItem* findItemByIndex(const QModelIndex &index) const; AbstractViewItem *prototype(); AbstractViewItem *firstItem(); void updateContent(); void themeChange(); int bufferSize() const; virtual void setTwoColumns(const bool enabled); bool twoColumns(); void setSubtreeCacheEnabled(const bool enabled); virtual void setListItemCaching(const bool enabled, const int index) = 0; protected: virtual void adjustVisibleContainerSize(const QSizeF &size) = 0; virtual void addItemToVisibleLayout(int index, AbstractViewItem *item) = 0; virtual void removeItemFromVisibleLayout(AbstractViewItem *item) = 0; virtual bool event(QEvent *e); virtual bool eventFilter(QObject *obj, QEvent *event); virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); virtual int maxItemCountInItemBuffer() const; bool itemVisibleInView(AbstractViewItem* item, const QRectF &viewRect, bool fullyVisible = true) const; protected: void updateItemBuffer(); void findFirstAndLastVisibleBufferIndex(int &firstVisibleBufferIndex, int &lastVisibleBufferIndex, const QRectF &viewRect, bool fullyVisible) const; QList m_items; AbstractItemView *m_itemView; AbstractViewItem *m_prototype; int m_bufferSize; private: void insertItem(int pos, const QModelIndex &index); bool m_twoColumns; Q_DISABLE_COPY(AbstractItemContainer) }; #endif // ABSTRACTITEMCONTAINER_H