31 , m_bookmarks(
mApp->bookmarks())
32 , m_model(m_bookmarks->model())
34 , m_type(BookmarksManagerViewType)
39 setUniformRowHeights(
true);
40 setDropIndicatorShown(
true);
41 setAllColumnsShowFocus(
true);
43 header()->resizeSections(QHeaderView::ResizeToContents);
45 connect(
this, &QTreeView::expanded,
this, &BookmarksTreeView::indexExpanded);
46 connect(
this, &QTreeView::collapsed,
this, &BookmarksTreeView::indexCollapsed);
60 setColumnHidden(1,
false);
61 setHeaderHidden(
false);
62 setMouseTracking(
false);
63 setSelectionMode(QAbstractItemView::ExtendedSelection);
66 setColumnHidden(1,
true);
67 setHeaderHidden(
true);
68 setMouseTracking(
true);
69 setSelectionMode(QAbstractItemView::SingleSelection);
75 restoreExpandedState(QModelIndex());
81 return items.count() == 1 ? items.at(0) :
nullptr;
86 QList<BookmarkItem*> items;
88 const auto indexes = selectionModel()->selectedRows();
89 for (
const QModelIndex &index : indexes) {
99 QModelIndex col0 = m_filter->mapFromSource(m_model->
index(item, 0));
100 QModelIndex col1 = m_filter->mapFromSource(m_model->
index(item, 1));
102 selectionModel()->clearSelection();
103 selectionModel()->select(col0, QItemSelectionModel::Select);
104 selectionModel()->select(col1, QItemSelectionModel::Select);
109 QModelIndex index = m_filter->mapFromSource(m_model->
index(item));
110 QModelIndex parent = m_filter->parent(index);
112 while (parent.isValid()) {
113 setExpanded(parent,
true);
114 parent = m_filter->parent(parent);
123void BookmarksTreeView::indexExpanded(
const QModelIndex &parent)
139void BookmarksTreeView::indexCollapsed(
const QModelIndex &parent)
155void BookmarksTreeView::restoreExpandedState(
const QModelIndex &parent)
157 for (
int i = 0;
i < m_filter->rowCount(parent); ++
i) {
158 QModelIndex index = m_filter->index(
i, 0, parent);
161 restoreExpandedState(index);
165void BookmarksTreeView::rowsInserted(
const QModelIndex &parent,
int start,
int end)
167 restoreExpandedState(parent);
168 QTreeView::rowsInserted(parent, start, end);
171void BookmarksTreeView::selectionChanged(
const QItemSelection &selected,
const QItemSelection &deselected)
179void BookmarksTreeView::contextMenuEvent(QContextMenuEvent* event)
184void BookmarksTreeView::mouseMoveEvent(QMouseEvent* event)
186 QTreeView::mouseMoveEvent(event);
189 QCursor cursor = Qt::ArrowCursor;
190 if (event->buttons() == Qt::NoButton) {
191 QModelIndex index = indexAt(event->position().toPoint());
193 cursor = Qt::PointingHandCursor;
196 viewport()->setCursor(cursor);
200void BookmarksTreeView::mousePressEvent(QMouseEvent* event)
202 QTreeView::mousePressEvent(event);
204 if (selectionModel()->selectedRows().count() == 1) {
205 QModelIndex index = indexAt(event->position().toPoint());
206 Qt::MouseButtons buttons =
event->buttons();
207 Qt::KeyboardModifiers modifiers =
event->modifiers();
209 if (index.isValid()) {
212 if (buttons == Qt::LeftButton && modifiers == Qt::ShiftModifier) {
215 else if (buttons == Qt::MiddleButton || (buttons == Qt::LeftButton && modifiers == Qt::ControlModifier)) {
222void BookmarksTreeView::mouseReleaseEvent(QMouseEvent* event)
224 QTreeView::mouseReleaseEvent(event);
226 if (selectionModel()->selectedRows().count() == 1) {
227 QModelIndex index = indexAt(event->position().toPoint());
229 if (index.isValid()) {
233 if (m_type ==
BookmarksSidebarViewType && event->button() == Qt::LeftButton && event->modifiers() == Qt::NoModifier) {
240void BookmarksTreeView::mouseDoubleClickEvent(QMouseEvent* event)
242 QTreeView::mouseDoubleClickEvent(event);
244 if (selectionModel()->selectedRows().count() == 1) {
245 QModelIndex index = indexAt(event->position().toPoint());
247 if (index.isValid()) {
249 Qt::MouseButtons buttons =
event->buttons();
250 Qt::KeyboardModifiers modifiers = QApplication::keyboardModifiers();
252 if (buttons == Qt::LeftButton && modifiers == Qt::NoModifier) {
255 else if (buttons == Qt::LeftButton && modifiers == Qt::ShiftModifier) {
262void BookmarksTreeView::keyPressEvent(QKeyEvent* event)
264 QTreeView::keyPressEvent(event);
266 if (selectionModel()->selectedRows().count() == 1) {
267 QModelIndex index = selectionModel()->selectedRows().at(0);
270 switch (event->key()) {
273 if (item->
isFolder() && (event->modifiers() == Qt::NoModifier || event->modifiers() == Qt::KeypadModifier)) {
274 setExpanded(index, !isExpanded(index));
277 Qt::KeyboardModifiers modifiers =
event->modifiers();
279 if (modifiers == Qt::NoModifier || modifiers == Qt::KeypadModifier) {
282 else if (modifiers == Qt::ControlModifier) {
285 else if (modifiers == Qt::ShiftModifier) {
void setSidebarExpanded(bool expanded)
void setExpanded(bool expanded)
bool isSidebarExpanded() const
void setFilterFixedString(const QString &pattern)
BookmarkItem * item(const QModelIndex &index) const
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
QList< BookmarkItem * > selectedBookmarks() const
ViewType viewType() const
BookmarksTreeView(QWidget *parent=nullptr)
void bookmarkShiftActivated(BookmarkItem *item)
void bookmarkCtrlActivated(BookmarkItem *item)
void ensureBookmarkVisible(BookmarkItem *item)
void setViewType(ViewType type)
void bookmarkActivated(BookmarkItem *item)
void bookmarksSelected(const QList< BookmarkItem * > &items)
BookmarkItem * selectedBookmark() const
void search(const QString &string)
void contextMenuRequested(const QPoint &point)
@ BookmarksSidebarViewType
@ BookmarksManagerViewType
void selectBookmark(BookmarkItem *item)