1 /* 2 notes_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 "notes_table_view.h" 20 21 namespace m8r { 22 NotesTableView(QWidget * parent)23NotesTableView::NotesTableView(QWidget* parent) 24 : QTableView(parent) 25 { 26 verticalHeader()->setVisible(false); 27 28 setSortingEnabled(true); 29 30 setEditTriggers(QAbstractItemView::NoEditTriggers); 31 setSelectionBehavior(QAbstractItemView::SelectRows); 32 setSelectionMode(QAbstractItemView::SingleSelection); 33 // disable TAB and Ctrl-O up/down navigation 34 setTabKeyNavigation(false); 35 } 36 keyPressEvent(QKeyEvent * event)37void NotesTableView::keyPressEvent(QKeyEvent* event) 38 { 39 if(!(event->modifiers() & Qt::AltModifier) 40 && 41 !(event->modifiers() & Qt::ControlModifier) 42 && 43 !(event->modifiers() & Qt::ShiftModifier)) 44 { 45 switch(event->key()) { 46 case Qt::Key_Return: 47 case Qt::Key_Right: 48 emit signalShowSelectedNote(); 49 return; 50 case Qt::Key_Down: 51 case Qt::Key_Up: 52 case Qt::Key_Left: 53 QTableView::keyPressEvent(event); 54 return; 55 case Qt::Key_Escape: 56 emit signalEscape(); 57 } 58 59 return; 60 } 61 62 QTableView::keyPressEvent(event); 63 } 64 mouseDoubleClickEvent(QMouseEvent * event)65void NotesTableView::mouseDoubleClickEvent(QMouseEvent* event) 66 { 67 Q_UNUSED(event); 68 69 // double click to O/N opens it 70 emit signalShowSelectedNote(); 71 } 72 resizeEvent(QResizeEvent * event)73void NotesTableView::resizeEvent(QResizeEvent* event) 74 { 75 MF_DEBUG("NotesTableView::resizeEvent " << event << std::endl); 76 77 if(horizontalHeader()->length() > 0) { 78 // ensure that 1st column gets the remaining space from others 79 horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); 80 } 81 verticalHeader()->setDefaultSectionSize(fontMetrics().height()*1.5); 82 83 QTableView::resizeEvent(event); 84 } 85 86 } // m8r namespace 87