-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbfunctionmanager.cpp
48 lines (41 loc) · 1.37 KB
/
bfunctionmanager.cpp
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
#include "bfunctionmanager.h"
BFilterManager::BFilterManager(QObject *parent) :
QObject(parent)
{
}
BFilterManager::~BFilterManager() {
for (auto filter = filters.begin(); filter != filters.end(); ++filter) {
delete *filter;
}
}
void BFilterManager::RegisterFilter(BFilter *filter) {
QMenu * menu = GetMenu(filter->GetMenuName());
QString menuItemName = QString::fromStdWString(filter->GetItemMenuName());
QAction * menuItem = menu->addAction(menuItemName);
menuItem->setCheckable(true);
menuItem->setChecked(false);
connect(menuItem, SIGNAL(triggered(bool)), filter, SLOT(SetChecked(bool)));
filters.push_back(filter);
}
void BFilterManager::RegisterToMenuBar(QMenuBar *menuBar) {
for (auto menu = filterMenu.begin(); menu != filterMenu.end(); ++menu) {
menuBar->addMenu(menu->second);
}
}
std::vector<BFilter *>::iterator BFilterManager::begin() {
return filters.begin();
}
std::vector<BFilter *>::iterator BFilterManager::end() {
return filters.end();
}
QMenu * BFilterManager::GetMenu(std::wstring & menuName) {
auto menu = filterMenu.find(menuName);
if (menu == filterMenu.end()) {
QString menuNameQt = QString::fromStdWString(menuName);
QMenu * newMenu = new QMenu(menuNameQt);
filterMenu[menuName] = newMenu;
return newMenu;
} else {
return menu->second;
}
}