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_pAddToFavorite(
nullptr)
23 , m_ParameterApp(parameterApp)
24 , m_pTableView(
nullptr)
31 setFocusPolicy(Qt::NoFocus);
33 setWindowTitle(tr(
"Activity list"));
35 QVBoxLayout* pLayout =
new QVBoxLayout(
this);
37 qCritical(log) <<
"new QVBoxLayout(this) fail";
42 m_pToolBar =
new QToolBar(
this);
43 m_pToolBar->setVisible(m_ParameterApp.GetDockListActiveShowToolBar());
45 auto ptbRecent =
new QToolButton(m_pToolBar);
46 ptbRecent->setFocusPolicy(Qt::NoFocus);
47 ptbRecent->setPopupMode(QToolButton::InstantPopup);
49 ptbRecent->setMenu(m_pRecentMenu);
50 ptbRecent->setIcon(m_pRecentMenu->icon());
51 ptbRecent->setText(m_pRecentMenu->title());
52 ptbRecent->setToolTip(m_pRecentMenu->title());
53 ptbRecent->setStatusTip(m_pRecentMenu->title());
54 m_pToolBar->addWidget(ptbRecent);
56 auto ptbStart =
new QToolButton(m_pToolBar);
57 ptbStart->setFocusPolicy(Qt::NoFocus);
58 ptbStart->setPopupMode(QToolButton::InstantPopup);
60 ptbStart->setMenu(m_pOperate);
61 ptbStart->setIcon(m_pOperate->icon());
62 ptbStart->setText(m_pOperate->title());
63 ptbStart->setToolTip(m_pOperate->title());
64 ptbStart->setStatusTip(m_pOperate->title());
65 m_pToolBar->addWidget(ptbStart);
67 m_pToolBar->addAction(m_pStop);
68 m_pToolBar->addSeparator();
69 m_pAddToFavorite = m_pToolBar->addAction(QIcon::fromTheme(
"emblem-favorite"), tr(
"Add to favorite"),
70 this, SLOT(slotAddToFavorite()));
71 m_pAddToFavorite->setStatusTip(m_pAddToFavorite->text());
72 m_pAddToFavorite->setToolTip(m_pAddToFavorite->text());
73 m_pAddToFavorite->setEnabled(
false);
74 layout()->addWidget(m_pToolBar);
76 m_pDockTitleBar =
new RabbitCommon::CTitleBar(parent);
78 m_pMenu =
new QMenu(tr(
"Tools"), m_pDockTitleBar);
79 m_pMenu->addMenu(m_pRecentMenu);
80 m_pMenu->addMenu(m_pOperate);
81 m_pMenu->addAction(m_pStop);
82 m_pMenu->addAction(m_pAddToFavorite);
84 QPushButton* pTools = m_pDockTitleBar->CreateSmallPushButton(
85 QIcon::fromTheme(
"tools"), m_pDockTitleBar);
86 pTools->setToolTip(tr(
"Tools"));
87 pTools->setMenu(m_pMenu);
88 m_pMenu->addSeparator();
89 auto pShowToolBar = m_pMenu->addAction(tr(
"Show tool bar"),
this, [&](){
90 QAction* a = (QAction*)sender();
92 m_pToolBar->setVisible(a->isChecked());
93 m_ParameterApp.SetDockListActiveShowToolBar(a->isChecked());
94 m_ParameterApp.Save();
97 pShowToolBar->setCheckable(
true);
98 pShowToolBar->setChecked(m_ParameterApp.GetDockListActiveShowToolBar());
100 QList<QWidget*> lstWidget;
102 m_pDockTitleBar->AddWidgets(lstWidget);
104 m_pTableView =
new QTableView(
this);
106 qCritical(log) <<
"new QTableView fail";
109 layout()->addWidget(m_pTableView);
110 m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu);
111 check = connect(m_pTableView,
112 SIGNAL(customContextMenuRequested(
const QPoint &)),
113 this, SLOT(slotCustomContextMenu(
const QPoint &)));
115 check = connect(m_pTableView, SIGNAL(clicked(
const QModelIndex &)),
116 this, SLOT(slotClicked(
const QModelIndex&)));
119 m_pModel =
new QStandardItemModel(m_pTableView);
120 m_pTableView->setModel(m_pModel);
121 m_pTableView->verticalHeader()->hide();
122 m_pTableView->setSelectionMode(QAbstractItemView::SingleSelection);
123 m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
124 m_pTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
125 m_pModel->setHorizontalHeaderItem(0,
new QStandardItem(tr(
"Name")));
126 m_pModel->setHorizontalHeaderItem(1,
new QStandardItem(tr(
"Protocol")));
127 m_pModel->setHorizontalHeaderItem(2,
new QStandardItem(tr(
"Type")));
128 m_pModel->setHorizontalHeaderItem(m_nId,
new QStandardItem(tr(
"ID")));
139 m_pTableView->horizontalHeader()->setSectionResizeMode(
140#
if defined(DEBUG) && !defined(Q_OS_ANDROID)
143 QHeaderView::Interactive);
152 QItemSelectionModel* pSelect = m_pTableView->selectionModel();
153 QModelIndexList lstIndex;
155 lstIndex = pSelect->selectedRows();
156 if(m_pModel->rowCount() > 0 && lstIndex.isEmpty())
158 m_pTableView->selectRow(0);
162CFrmActive::~CFrmActive()
165void CFrmActive::slotCustomContextMenu(
const QPoint &pos)
168 int r = m_pTableView->currentIndex().row();
169 if(-1 < r && r < m_Operates.size())
171 auto c = m_Operates[r];
173 auto m = c->GetMenu();
176 menu.addActions(m->actions());
181 menu.addMenu(m_pRecentMenu);
182 menu.addMenu(m_pOperate);
183 menu.addAction(m_pStop);
185 menu.addAction(m_pAddToFavorite);
186 menu.exec(mapToGlobal(pos));
189void CFrmActive::slotClicked(
const QModelIndex &index)
191 QVariant v = m_pModel->item(index.row(), m_nId)->data();
196void CFrmActive::slotLoad()
200 m_pModel->removeRows(0, m_pModel->rowCount());
201 m_pAddToFavorite->setEnabled(m_Operates.size() > 0);
202 foreach(
auto c, m_Operates) {
203 QList<QStandardItem*> lstItem;
204 QStandardItem* pName =
new QStandardItem(c->Icon(), c->Name());
205 pName->setToolTip(c->Description());
207 QStandardItem* pProtocol =
new QStandardItem(c->Protocol());
208 lstItem << pProtocol;
209 QStandardItem* pType =
new QStandardItem(c->GetTypeName());
211 QStandardItem* pId =
new QStandardItem(c->Id());
216 m_pModel->appendRow(lstItem);
222 m_pTableView->resizeColumnToContents(0);
226void CFrmActive::slotViewChanged(
const QWidget *pView)
229 if(m_Operates.size() != m_pModel->rowCount())
231 foreach (
auto c, m_Operates) {
233 if(c->GetViewer() == pView)
238 m_pTableView->selectRow(nIndex);
241void CFrmActive::slotAddToFavorite()
243 QItemSelectionModel* pSelect = m_pTableView->selectionModel();
244 QModelIndexList lstIndex = pSelect->selectedRows();
245 foreach(
auto index, lstIndex)
247 if(!index.isValid())
continue;
248 QVariant v = m_pModel->item(index.row(), m_nId)->data();
251 QString szName = c->
Name();
252 QIcon icon = c->
Icon();
254 QString szFile = c->GetSettingsFile();
255 emit sigAddToFavorite(szName, szDescription, icon, szFile);
virtual const QIcon Icon() const
Icon.
virtual const QString Name()
Name.
virtual const QString Description()
Description.