-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjournalview.cpp
More file actions
65 lines (50 loc) · 1.72 KB
/
Copy pathjournalview.cpp
File metadata and controls
65 lines (50 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <QMenu>
#include <QHeaderView>
#include "journal.h"
#include "journalview.h"
JournalView::JournalView(QWidget *parent)
: QTreeView(parent)
{
connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(rowActivated(QModelIndex)));
connect(this, SIGNAL(customContextMenuRequested(const QPoint &)),
this, SLOT(showItemContextMenu(QPoint)));
setContextMenuPolicy(Qt::CustomContextMenu);
connect(header(), SIGNAL(customContextMenuRequested(const QPoint &)),
this, SLOT(showHeaderContextMenu(QPoint)));
header()->setContextMenuPolicy(Qt::CustomContextMenu);
}
void JournalView::setJournal(Journal *journal)
{
m_journal = journal;
setModel(journal);
}
void JournalView::rowActivated(const QModelIndex &index)
{
emit entryActivated(m_journal->entry(index));
}
void JournalView::showItemContextMenu(const QPoint &pos)
{
QModelIndex index = indexAt(pos);
Q_UNUSED(index);
QMenu menu(this);
menu.addAction("Test");
menu.exec(viewport()->mapToGlobal(pos));
// Leave this for now - will need a QWidgetAction
// QMenu *highlightMenu = menu.addMenu(tr("Highlight"));
// highlightMenu->addText();
}
void JournalView::showHeaderContextMenu(const QPoint &pos)
{
QMenu menu(this);
for (int i=0; i < m_journal->columnCount(QModelIndex()); i++) {
QAction *action = menu.addAction(m_journal->headerData(i, Qt::Horizontal, Journal::ContextMenuRole).toString());
action->setData(i);
action->setCheckable(true);
action->setChecked(!isColumnHidden(i));
}
QAction *action = menu.exec(header()->mapToGlobal(pos));
if (action) {
int idx = action->data().toInt();
setColumnHidden(idx, !isColumnHidden(idx));
}
}