1 /* 2 tags_table_view.cpp MindForger thinking notebook 3 4 Copyright (C) 2016-2020 Martin Dvorak <martin.dvorak@mindforger.com> 5 6 This program is free software; you can redistribute it and/or 7 modify it under the terms of the GNU General Public License 8 as published by the Free Software Foundation; either version 2 9 of the License, or (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 #include "tags_table_view.h" 20 21 namespace m8r { 22 TagsTableView(QWidget * parent)23TagsTableView::TagsTableView(QWidget* parent) 24 : QTableView(parent) 25 { 26 verticalHeader()->setVisible(false); 27 verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); 28 29 setSortingEnabled(true); 30 31 setEditTriggers(QAbstractItemView::NoEditTriggers); 32 setSelectionBehavior(QAbstractItemView::SelectRows); 33 setSelectionMode(QAbstractItemView::SingleSelection); 34 } 35 keyPressEvent(QKeyEvent * event)36void TagsTableView::keyPressEvent(QKeyEvent* event) 37 { 38 if(!(event->modifiers() & Qt::AltModifier) 39 && 40 !(event->modifiers() & Qt::ControlModifier) 41 && 42 !(event->modifiers() & Qt::ShiftModifier)) 43 { 44 switch(event->key()) { 45 case Qt::Key_Return: 46 case Qt::Key_Right: 47 emit signalShowDialogForTag(); 48 return; 49 case Qt::Key_Down: 50 QTableView::keyPressEvent(event); 51 return; 52 case Qt::Key_Up: 53 // IMPROVE left to cancel selection 54 case Qt::Key_Left: 55 QTableView::keyPressEvent(event); 56 return; 57 } 58 59 return; 60 } 61 62 QTableView::keyPressEvent(event); 63 } 64 mouseDoubleClickEvent(QMouseEvent * event)65void TagsTableView::mouseDoubleClickEvent(QMouseEvent* event) 66 { 67 Q_UNUSED(event); 68 69 // double click to O opens it 70 emit signalShowDialogForTag(); 71 } 72 resizeEvent(QResizeEvent * event)73void TagsTableView::resizeEvent(QResizeEvent* event) 74 { 75 MF_DEBUG("TagsTableView::resizeEvent " << event << std::endl); 76 77 if(horizontalHeader()->length() > 0) { 78 // ensure that 1st column gets the remaining space from others 79 horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); 80 } 81 verticalHeader()->setDefaultSectionSize(fontMetrics().height()*1.5); 82 83 // cardinality 84 this->setColumnWidth(1, this->fontMetrics().averageCharWidth()*6); 85 86 QTableView::resizeEvent(event); 87 } 88 89 } // m8r namespace 90