-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgroupmanagertreeview.cpp
More file actions
63 lines (53 loc) · 1.89 KB
/
Copy pathgroupmanagertreeview.cpp
File metadata and controls
63 lines (53 loc) · 1.89 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
#include "groupmanagertreeview.h"
#include <QStandardItemModel>
#include <infinitestashstandarditemmodel.h>
#include <QContextMenuEvent>
GroupManagerTreeView::GroupManagerTreeView(QWidget *parent) :
QTreeView(parent)
{
mContextMenu = new QMenu(this);
QAction* action = new QAction("Remove Group", mContextMenu);
connect(action, SIGNAL(triggered()), this, SLOT(OnDeleteGroupClicked()));
mContextMenu->addAction(action);
}
GroupManagerTreeView::~GroupManagerTreeView()
{
if (mContextMenu != NULL)
delete mContextMenu;
}
void GroupManagerTreeView::contextMenuEvent(QContextMenuEvent *inEvent)
{
QTreeView::contextMenuEvent(inEvent);
if (mContextMenu != NULL)
mContextMenu->popup(inEvent->globalPos());
}
void GroupManagerTreeView::OnDeleteGroupClicked()
{
QPoint point = this->mapFromGlobal(mContextMenu->pos());
QStandardItemModel* model = dynamic_cast<QStandardItemModel*>(this->model());
QStandardItem* itemClicked = model->itemFromIndex(this->indexAt(point));
if (itemClicked != NULL)
{
QVariant itemType = itemClicked->data(Qt::UserRole + 1);
if (!itemType.isNull() && itemType.toInt() == InfiniteStashStandardItemModel::GroupItemType)
{
if (!itemClicked->hasChildren())
{
QVariant groupId = itemClicked->data(Qt::UserRole);
if (!groupId.isNull())
{
QStandardItem* parent = itemClicked->parent();
if (parent == NULL)
{
model->removeRow(itemClicked->row());
}
else
{
parent->removeRow(itemClicked->row());
}
groupDeleted(groupId.toLongLong());
}
}
}
}
}