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)23 NotesTableView::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)37 void 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)65 void 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)73 void 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