2#include <QLoggingCategory>
8static Q_LOGGING_CATEGORY(log,
"App.FrmActive")
14 RabbitCommon::CRecentMenu *pRecentMenu,
17 , m_pDockTitleBar(
nullptr)
18 , m_pOperate(pOperate)
20 , m_pRecentMenu(pRecentMenu)
21 , m_Operates(operates)
22 , m_ParameterApp(parameterApp)
23 , m_pTableView(
nullptr)
30 setFocusPolicy(Qt::NoFocus);
32 setWindowTitle(tr(
"List active"));
34 QVBoxLayout* pLayout =
new QVBoxLayout(
this);
36 qCritical(log) <<
"new QVBoxLayout(this) fail";
41 m_pToolBar =
new QToolBar(
this);
42 m_pToolBar->setVisible(m_ParameterApp.GetDockListActiveShowToolBar());
44 auto ptbRecent =
new QToolButton(m_pToolBar);
45 ptbRecent->setFocusPolicy(Qt::NoFocus);
46 ptbRecent->setPopupMode(QToolButton::InstantPopup);
48 ptbRecent->setMenu(m_pRecentMenu);
49 ptbRecent->setIcon(m_pRecentMenu->icon());
50 ptbRecent->setText(m_pRecentMenu->title());
51 ptbRecent->setToolTip(m_pRecentMenu->title());
52 ptbRecent->setStatusTip(m_pRecentMenu->title());
53 m_pToolBar->addWidget(ptbRecent);
55 auto ptbStart =
new QToolButton(m_pToolBar);
56 ptbStart->setFocusPolicy(Qt::NoFocus);
57 ptbStart->setPopupMode(QToolButton::InstantPopup);
59 ptbStart->setMenu(m_pOperate);
60 ptbStart->setIcon(m_pOperate->icon());
61 ptbStart->setText(m_pOperate->title());
62 ptbStart->setToolTip(m_pOperate->title());
63 ptbStart->setStatusTip(m_pOperate->title());
64 m_pToolBar->addWidget(ptbStart);
66 m_pToolBar->addAction(m_pStop);
67 layout()->addWidget(m_pToolBar);
69 m_pDockTitleBar =
new RabbitCommon::CTitleBar(parent);
71 m_pMenu =
new QMenu(tr(
"Tools"), m_pDockTitleBar);
72 m_pMenu->addMenu(m_pRecentMenu);
73 m_pMenu->addMenu(m_pOperate);
74 m_pMenu->addAction(m_pStop);
75 QPushButton* pTools = m_pDockTitleBar->CreateSmallPushButton(
76 QIcon::fromTheme(
"tools"), m_pDockTitleBar);
77 pTools->setToolTip(tr(
"Tools"));
78 pTools->setMenu(m_pMenu);
79 m_pMenu->addAction(m_pStop);
80 m_pMenu->addSeparator();
81 auto pShowToolBar = m_pMenu->addAction(tr(
"Show tool bar"),
this, [&](){
82 QAction* a = (QAction*)sender();
84 m_pToolBar->setVisible(a->isChecked());
85 m_ParameterApp.SetDockListActiveShowToolBar(a->isChecked());
86 m_ParameterApp.Save();
89 pShowToolBar->setCheckable(
true);
90 pShowToolBar->setChecked(m_ParameterApp.GetDockListActiveShowToolBar());
92 QList<QWidget*> lstWidget;
94 m_pDockTitleBar->AddWidgets(lstWidget);
96 m_pTableView =
new QTableView(
this);
98 qCritical(log) <<
"new QTableView fail";
101 layout()->addWidget(m_pTableView);
102 m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu);
103 check = connect(m_pTableView,
104 SIGNAL(customContextMenuRequested(
const QPoint &)),
105 this, SLOT(slotCustomContextMenu(
const QPoint &)));
107 check = connect(m_pTableView, SIGNAL(clicked(
const QModelIndex &)),
108 this, SLOT(slotClicked(
const QModelIndex&)));
111 m_pModel =
new QStandardItemModel(m_pTableView);
112 m_pTableView->setModel(m_pModel);
113 m_pTableView->verticalHeader()->hide();
114 m_pTableView->setSelectionMode(QAbstractItemView::SingleSelection);
115 m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
116 m_pTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
117 m_pModel->setHorizontalHeaderItem(0,
new QStandardItem(tr(
"Name")));
118 m_pModel->setHorizontalHeaderItem(1,
new QStandardItem(tr(
"Protocol")));
119 m_pModel->setHorizontalHeaderItem(2,
new QStandardItem(tr(
"Type")));
120 m_pModel->setHorizontalHeaderItem(m_nId,
new QStandardItem(tr(
"ID")));
131 m_pTableView->horizontalHeader()->setSectionResizeMode(
132#
if defined(DEBUG) && !defined(Q_OS_ANDROID)
135 QHeaderView::Interactive);
144 QItemSelectionModel* pSelect = m_pTableView->selectionModel();
145 QModelIndexList lstIndex;
147 lstIndex = pSelect->selectedRows();
148 if(m_pModel->rowCount() > 0 && lstIndex.isEmpty())
150 m_pTableView->selectRow(0);
154CFrmActive::~CFrmActive()
157void CFrmActive::slotCustomContextMenu(
const QPoint &pos)
160 int r = m_pTableView->currentIndex().row();
161 if(-1 < r && r < m_Operates.size())
163 auto c = m_Operates[r];
165 auto m = c->GetMenu();
168 menu.addActions(m->actions());
173 menu.addMenu(m_pRecentMenu);
174 menu.addMenu(m_pOperate);
175 menu.addAction(m_pStop);
176 menu.exec(mapToGlobal(pos));
179void CFrmActive::slotClicked(
const QModelIndex &index)
181 QVariant v = m_pModel->item(index.row(), m_nId)->data();
186void CFrmActive::slotLoad()
190 m_pModel->removeRows(0, m_pModel->rowCount());
191 foreach(
auto c, m_Operates) {
192 QList<QStandardItem*> lstItem;
193 QStandardItem* pName =
new QStandardItem(c->Icon(), c->Name());
194 pName->setToolTip(c->Description());
196 QStandardItem* pProtocol =
new QStandardItem(c->Protocol());
197 lstItem << pProtocol;
198 QStandardItem* pType =
new QStandardItem(c->GetTypeName());
200 QStandardItem* pId =
new QStandardItem(c->Id());
205 m_pModel->appendRow(lstItem);
211 m_pTableView->resizeColumnToContents(0);
215void CFrmActive::slotViewChanged(
const QWidget *pView)
218 if(m_Operates.size() != m_pModel->rowCount())
220 foreach (
auto c, m_Operates) {
222 if(c->GetViewer() == pView)
227 m_pTableView->selectRow(nIndex);