| 867 | } |
| 868 | |
| 869 | void ProjectExplorer::changeSelectedVisible() { |
| 870 | const auto& items = m_treeView->selectionModel()->selectedIndexes(); |
| 871 | |
| 872 | // determine all selected aspects |
| 873 | QVector<WorksheetElement*> elements; |
| 874 | const auto columnCount = m_treeView->model()->columnCount(); |
| 875 | for (int i = 0; i < items.size() / columnCount; ++i) { |
| 876 | const QModelIndex& index = items.at(i * columnCount); |
| 877 | auto* aspect = static_cast<AbstractAspect*>(index.internalPointer()); |
| 878 | auto* element = dynamic_cast<WorksheetElement*>(aspect); |
| 879 | if (element) |
| 880 | elements << element; |
| 881 | } |
| 882 | |
| 883 | const int numberElements = elements.size(); |
| 884 | if (numberElements == 0) |
| 885 | return; |
| 886 | |
| 887 | // Use first element as reference |
| 888 | const auto& firstElement = elements.constFirst(); |
| 889 | const bool newVisible = !firstElement->isVisible(); |
| 890 | |
| 891 | if (numberElements > 1) { |
| 892 | firstElement->beginMacro(i18n("%1 elements: set visible: %2").arg(numberElements, newVisible)); |
| 893 | for (auto* e : elements) |
| 894 | e->setVisible(newVisible); |
| 895 | firstElement->endMacro(); |
| 896 | } else |
| 897 | firstElement->setVisible(newVisible); |
| 898 | } |
| 899 | |
| 900 | void ProjectExplorer::deleteSelected() { |
| 901 | const auto& items = m_treeView->selectionModel()->selectedIndexes(); |
nothing calls this directly
no test coverage detected