Public Slots | Public Member Functions | Protected Member Functions | Friends

QxtCrumbView Class Reference

#include <qxtcrumbview.h>

Collaboration diagram for QxtCrumbView:
Collaboration graph
[legend]

List of all members.

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

Detailed Description

Definition at line 35 of file qxtcrumbview.h.


Constructor & Destructor Documentation

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()));
}

Member Function Documentation

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());
}

Friends And Related Function Documentation

friend class QxtCrumbViewPrivate [friend]

Definition at line 64 of file qxtcrumbview.h.


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