int QAccessibleTable::indexOfChild(const QAccessibleInterface *iface) const { if (!view()->model()) return -1; QAccessibleInterface *parent = iface->parent(); if (parent->object() != view()) return -1; Q_ASSERT(iface->role() != QAccessible::TreeItem); // should be handled by tree class if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) { const QAccessibleTableCell* cell = static_cast<const QAccessibleTableCell*>(iface); return logicalIndex(cell->m_index); } else if (iface->role() == QAccessible::ColumnHeader){ const QAccessibleTableHeaderCell* cell = static_cast<const QAccessibleTableHeaderCell*>(iface); return cell->index + (verticalHeader() ? 1 : 0); } else if (iface->role() == QAccessible::RowHeader){ const QAccessibleTableHeaderCell* cell = static_cast<const QAccessibleTableHeaderCell*>(iface); return (cell->index + 1) * (view()->model()->columnCount() + 1); } else if (iface->role() == QAccessible::Pane) { return 0; // corner button } else { qWarning() << "WARNING QAccessibleTable::indexOfChild Fix my children..." << iface->role() << iface->text(QAccessible::Name); } // FIXME: we are in denial of our children. this should stop. return -1; }
void handleSectionMoved(int logical, int oldVisualIndex, int newVisualIndex) { for (int i=qMin(oldVisualIndex, newVisualIndex);i<count();i++){ int logical = logicalIndex(i); boxes[logical]->setGeometry(sectionViewportPosition(logical), 0, sectionSize(logical) - 5, height()); } }
void handleSectionResized(int i) { for (int j=visualIndex(i);j<count();j++) { int logical = logicalIndex(j); boxes[logical]->setGeometry(sectionViewportPosition(logical), 0, sectionSize(logical) - 5, height()); } }
QList<QAccessibleInterface *> QAccessibleTable::selectedCells() const { QList<QAccessibleInterface*> cells; if (!view()->selectionModel()) return cells; Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedIndexes()) cells.append(child(logicalIndex(index))); return cells; }
QAccessibleInterface *QAccessibleTable::childAt(int x, int y) const { QPoint viewportOffset = view()->viewport()->mapTo(view(), QPoint(0,0)); QPoint indexPosition = view()->mapFromGlobal(QPoint(x, y) - viewportOffset); // FIXME: if indexPosition < 0 in one coordinate, return header QModelIndex index = view()->indexAt(indexPosition); if (index.isValid()) { return child(logicalIndex(index)); } return 0; }
QAccessibleInterface *QAccessibleTable::cellAt(int row, int column) const { if (!view()->model()) return 0; Q_ASSERT(role() != QAccessible::Tree); QModelIndex index = view()->model()->index(row, column, view()->rootIndex()); if (!index.isValid()) { qWarning() << "QAccessibleTable::cellAt: invalid index: " << index << " for " << view(); return 0; } return child(logicalIndex(index)); }
void CQHeaderView:: handleSectionMoved(int /*logical*/, int oldVisualIndex, int newVisualIndex) { for (int i = qMin(oldVisualIndex, newVisualIndex); i < count(); ++i) { int logical = logicalIndex(i); QWidget *w = widgets_[logical]; w->setGeometry(sectionViewportPosition(logical), 0, sectionSize(logical) - 5, height()); } }
void CQHeaderView:: handleSectionResized(int i) { for (int j = visualIndex(i); j < count(); ++j) { int logical = logicalIndex(j); QWidget *w = widgets_[logical]; w->setGeometry(sectionViewportPosition(logical), 0, sectionSize(logical) - 5, height()); } }
void PlaylistHeader::contextMenuEvent(QContextMenuEvent* e) { menu_section_ = logicalIndexAt(e->pos()); if (menu_section_ == -1 || ( menu_section_ == logicalIndex(0) && logicalIndex(1) == -1)) hide_action_->setVisible(false); else { hide_action_->setVisible(true); QString title(model()->headerData(menu_section_, Qt::Horizontal).toString()); hide_action_->setText(tr("&Hide %1").arg(title)); } qDeleteAll(show_actions_); show_actions_.clear(); for (int i=0 ; i<count() ; ++i) { AddColumnAction(i); } menu_->popup(e->globalPos()); }
QStyleOptionHeader HierarchicalHeaderView::styleOptionForCell(int logicalInd) const { QStyleOptionHeader opt; initStyleOption(&opt); if (window()->isActiveWindow()) opt.state |= QStyle::State_Active; opt.textAlignment = Qt::AlignCenter; opt.iconAlignment = Qt::AlignVCenter; opt.section = logicalInd; int visual = visualIndex(logicalInd); if (count() == 1) opt.position = QStyleOptionHeader::OnlyOneSection; else { if (visual == 0) opt.position = QStyleOptionHeader::Beginning; else opt.position=(visual==count()-1 ? QStyleOptionHeader::End : QStyleOptionHeader::Middle); } if(isClickable()) { /* if (logicalIndex == d->hover) state |= QStyle::State_MouseOver; if (logicalIndex == d->pressed) { state |= QStyle::State_Sunken; } else*/ { if(highlightSections() && selectionModel()) { if(orientation()==Qt::Horizontal) { if(selectionModel()->columnIntersectsSelection(logicalInd, rootIndex())) opt.state |= QStyle::State_On; if(selectionModel()->isColumnSelected(logicalInd, rootIndex())) opt.state |= QStyle::State_Sunken; } else { if(selectionModel()->rowIntersectsSelection(logicalInd, rootIndex())) opt.state |= QStyle::State_On; if(selectionModel()->isRowSelected(logicalInd, rootIndex())) opt.state |= QStyle::State_Sunken; } } } } if(selectionModel()) { bool previousSelected=false; if(orientation()==Qt::Horizontal) previousSelected = selectionModel()->isColumnSelected(logicalIndex(visual - 1), rootIndex()); else previousSelected = selectionModel()->isRowSelected(logicalIndex(visual - 1), rootIndex()); bool nextSelected=false; if(orientation()==Qt::Horizontal) nextSelected = selectionModel()->isColumnSelected(logicalIndex(visual + 1), rootIndex()); else nextSelected = selectionModel()->isRowSelected(logicalIndex(visual + 1), rootIndex()); if (previousSelected && nextSelected) opt.selectedPosition = QStyleOptionHeader::NextAndPreviousAreSelected; else { if (previousSelected) opt.selectedPosition = QStyleOptionHeader::PreviousIsSelected; else { if (nextSelected) opt.selectedPosition = QStyleOptionHeader::NextIsSelected; else opt.selectedPosition = QStyleOptionHeader::NotAdjacent; } } } return opt; }