#include <qxtcrumbview.h>
Public Slots | |
virtual void | reset () |
void | back () |
void | enterTree (const QModelIndex &index) |
Public Member Functions | |
QxtCrumbView (QWidget *parent=0) | |
virtual void | setModel (QAbstractItemModel *model) |
virtual QModelIndex | indexAt (const QPoint &point) const |
virtual void | scrollTo (const QModelIndex &index, ScrollHint hint=EnsureVisible) |
virtual QRect | visualRect (const QModelIndex &index) const |
void | setItemDelegate (QAbstractItemDelegate *delegate) |
QListView * | listView () const |
Protected Member Functions | |
virtual int | horizontalOffset () const |
virtual int | verticalOffset () const |
virtual bool | isIndexHidden (const QModelIndex &index) const |
virtual QModelIndex | moveCursor (CursorAction action, Qt::KeyboardModifiers mods) |
virtual void | setSelection (const QRect &rect, QItemSelectionModel::SelectionFlags flags) |
virtual QRegion | visualRegionForSelection (const QItemSelection &selection) const |
Friends | |
class | QxtCrumbViewPrivate |
Definition at line 35 of file qxtcrumbview.h.
QxtCrumbView::QxtCrumbView | ( | QWidget * | parent = 0 ) |
Definition at line 166 of file qxtcrumbview.cpp.
References back(), enterTree(), and QXT_INIT_PRIVATE.
: QAbstractItemView(parent) { QXT_INIT_PRIVATE(QxtCrumbView); setAutoFillBackground(false); setBackgroundRole(QPalette::Window); viewport()->setAutoFillBackground(false); viewport()->setBackgroundRole(QPalette::Window); setFrameStyle(QFrame::NoFrame); QVBoxLayout* layout = new QVBoxLayout(this); qxt_d().buttonLayout = new QHBoxLayout; qxt_d().buttonLayout->setSpacing(0); qxt_d().buttonLayout->addStretch(1); QToolButton* backButton = new QToolButton(this); backButton->setIcon(style()->standardPixmap(QStyle::SP_FileDialogBack)); backButton->setAutoRaise(true); backButton->setFocusPolicy(Qt::NoFocus); qxt_d().buttonLayout->addWidget(backButton); layout->addLayout(qxt_d().buttonLayout, 0); qxt_d().view = new QxtCrumbViewList(this); layout->addWidget(qxt_d().view, 1); qxt_d().addCrumb(QModelIndex()); QObject::connect(qxt_d().view, SIGNAL(activated(QModelIndex)), this, SLOT(enterTree(QModelIndex))); QObject::connect(backButton, SIGNAL(clicked()), this, SLOT(back())); }
void QxtCrumbView::back | ( | ) | [slot] |
Definition at line 273 of file qxtcrumbview.cpp.
Referenced by QxtCrumbView().
{ if(qxt_d().crumbs.count() <= 1) return; qxt_d().buttons.last()->deleteLater(); qxt_d().buttons.removeLast(); qxt_d().crumbs.removeLast(); qxt_d().view->setRootIndex(qxt_d().crumbs.last()); }
void QxtCrumbView::enterTree | ( | const QModelIndex & | index ) | [slot] |
Definition at line 248 of file qxtcrumbview.cpp.
Referenced by QxtCrumbViewPrivate::buttonPressed(), and QxtCrumbView().
{ if(!model() || !model()->hasChildren(index)) return; if(index == qxt_d().view->rootIndex()) { // do nothing but reload the view } else if(index.parent() != qxt_d().view->rootIndex()) { foreach(QxtCrumbViewButton* b, qxt_d().buttons) b->deleteLater(); qxt_d().crumbs.clear(); qxt_d().buttons.clear(); qxt_d().addCrumb(QModelIndex()); QList<QModelIndex> chain; QModelIndex pos = index; while(pos.isValid()) { chain.append(pos); pos = pos.parent(); } while(!chain.isEmpty()) { qxt_d().addCrumb(chain.last()); chain.removeLast(); } } else { qxt_d().addCrumb(index); } qxt_d().view->setRootIndex(index); }
int QxtCrumbView::horizontalOffset | ( | ) | const [protected, virtual] |
Definition at line 206 of file qxtcrumbview.cpp.
{
return qxt_d().view->horizontalOffset();
}
QModelIndex QxtCrumbView::indexAt | ( | const QPoint & | point ) | const [virtual] |
Definition at line 214 of file qxtcrumbview.cpp.
{
return qxt_d().view->indexAt(qxt_d().view->mapFromParent(point));
}
bool QxtCrumbView::isIndexHidden | ( | const QModelIndex & | index ) | const [protected, virtual] |
Definition at line 218 of file qxtcrumbview.cpp.
{
return qxt_d().view->isIndexHidden(index);
}
QListView * QxtCrumbView::listView | ( | ) | const |
Definition at line 287 of file qxtcrumbview.cpp.
{
return qxt_d().view;
}
QModelIndex QxtCrumbView::moveCursor | ( | CursorAction | action, |
Qt::KeyboardModifiers | mods | ||
) | [protected, virtual] |
Definition at line 222 of file qxtcrumbview.cpp.
{
return qxt_d().view->moveCursor(action, mods);
}
void QxtCrumbView::reset | ( | ) | [virtual, slot] |
Definition at line 198 of file qxtcrumbview.cpp.
{ QAbstractItemView::reset(); qDeleteAll(qxt_d().buttons); qxt_d().crumbs.clear(); qxt_d().buttons.clear(); qxt_d().addCrumb(QModelIndex()); }
void QxtCrumbView::scrollTo | ( | const QModelIndex & | index, |
ScrollHint | hint = EnsureVisible |
||
) | [virtual] |
Definition at line 226 of file qxtcrumbview.cpp.
{ if(index.parent() != qxt_d().view->rootIndex()) { // set the breadcrumbs and the view's root index correctly } qxt_d().view->scrollTo(index, hint); }
void QxtCrumbView::setItemDelegate | ( | QAbstractItemDelegate * | delegate ) |
Definition at line 281 of file qxtcrumbview.cpp.
{ QAbstractItemView::setItemDelegate(delegate); delete qxt_d().view->itemDelegate(); qxt_d().view->setItemDelegate(new QxtCrumbViewDelegate(itemDelegate(), this)); }
void QxtCrumbView::setModel | ( | QAbstractItemModel * | model ) | [virtual] |
Definition at line 191 of file qxtcrumbview.cpp.
{ qxt_d().view->setModel(model); QAbstractItemView::setModel(model); delete qxt_d().view->itemDelegate(); qxt_d().view->setItemDelegate(new QxtCrumbViewDelegate(itemDelegate(), this)); }
void QxtCrumbView::setSelection | ( | const QRect & | rect, |
QItemSelectionModel::SelectionFlags | flags | ||
) | [protected, virtual] |
Definition at line 233 of file qxtcrumbview.cpp.
{ QPoint tl = qxt_d().view->mapFromParent(rect.topLeft()); qxt_d().view->setSelection(QRect(tl, rect.size()), flags); }
int QxtCrumbView::verticalOffset | ( | ) | const [protected, virtual] |
Definition at line 210 of file qxtcrumbview.cpp.
{
return qxt_d().view->verticalOffset();
}
QRect QxtCrumbView::visualRect | ( | const QModelIndex & | index ) | const [virtual] |
Definition at line 238 of file qxtcrumbview.cpp.
{
QRect rect = qxt_d().view->visualRect(index);
return QRect(qxt_d().view->mapToParent(rect.topLeft()), rect.size());
}
QRegion QxtCrumbView::visualRegionForSelection | ( | const QItemSelection & | selection ) | const [protected, virtual] |
Definition at line 243 of file qxtcrumbview.cpp.
{
QRegion region = qxt_d().view->visualRegionForSelection(selection);
return region.translated(qxt_d().view->pos());
}
friend class QxtCrumbViewPrivate [friend] |
Definition at line 64 of file qxtcrumbview.h.