1 /*
2 organizer_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 "dashboard_view.h"
20
21 namespace m8r {
22
DashboardView(QWidget * parent)23 DashboardView::DashboardView(QWidget* parent)
24 : QSplitter{Qt::Horizontal, parent},
25 isMindForgerRepository(false)
26 {
27 left = new QSplitter{Qt::Vertical, this};
28 left->setStretchFactor(0, 1);
29 left->setStretchFactor(1, 1);
30
31 middle = new QSplitter{Qt::Vertical, this};
32 middle->setStretchFactor(0, 1);
33 middle->setStretchFactor(1, 1);
34
35 right = new QSplitter{Qt::Vertical, this};
36 right->setStretchFactor(0, 1);
37 right->setStretchFactor(1, 1);
38
39 // welcome
40 welcomeDashboardlet = new QTextBrowser(left);
41 welcomeDashboardlet->setOpenExternalLinks(true);
42 left->addWidget(welcomeDashboardlet);
43
44 // recent
45 recentDashboardlet = new RecentNotesTableView(left, true);
46 left->addWidget(recentDashboardlet);
47
48 // organizer quadrants
49 doFirstDashboardlet = new OrganizerQuadrantView(middle);
50 middle->addWidget(doFirstDashboardlet);
51
52 // tags
53 tagsDashboardlet = new TagsTableView(middle);
54 middle->addWidget(tagsDashboardlet);
55
56 // navigator
57 navigatorDashboardlet = new NavigatorView(right, true);
58 // IMPROVE should go to resize event
59 int windowHeight=parent->parentWidget()->parentWidget()->size().height();
60 navigatorDashboardlet->setFixedHeight(windowHeight);
61 right->addWidget(navigatorDashboardlet);
62
63 // outlines
64 outlinesDashboardlet = new OutlinesTableView(right, true);
65 right->addWidget(outlinesDashboardlet);
66
67 // self ~ horizontal splitter
68 setStretchFactor(0, 1);
69 setStretchFactor(1, 1);
70 setStretchFactor(2, 1);
71
72 addWidget(left);
73 addWidget(middle);
74 addWidget(right);
75 }
76
setMindForgerMode(bool isMindForgerRepository)77 void DashboardView::setMindForgerMode(bool isMindForgerRepository)
78 {
79 this->isMindForgerRepository = isMindForgerRepository;
80 if(isMindForgerRepository) {
81 middle->setVisible(true);
82 } else {
83 middle->setVisible(false);
84 }
85 }
86
resizeEvent(QResizeEvent * event)87 void DashboardView::resizeEvent(QResizeEvent* event)
88 {
89 UNUSED_ARG(event);
90
91 int normalizedWidth = width()/fontMetrics().averageCharWidth();
92 if(!isMindForgerRepository || normalizedWidth < SIMPLIFIED_VIEW_THRESHOLD_WIDTH) {
93 middle->setVisible(false);
94 } else {
95 middle->setVisible(true);
96 }
97
98 QSplitter::resizeEvent(event);
99 }
100
~DashboardView()101 DashboardView::~DashboardView()
102 {
103 }
104
105 } // m8r namespace
106