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)
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(tr(
"Start"));
64 ptbStart->setStatusTip(tr(
"Start"));
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 QModelIndex index = m_pTableView->currentIndex();
170 if(-1 < r && r < m_Operates.size())
172 QVariant v = m_pModel->item(index.row(), m_nId)->data();
178 menu.addActions(m->actions());
183 menu.addMenu(m_pRecentMenu);
184 menu.addMenu(m_pOperate);
185 menu.addAction(m_pStop);
187 menu.addAction(m_pAddToFavorite);
188 menu.exec(mapToGlobal(pos));
191void CFrmActive::slotClicked(
const QModelIndex &index)
193 QVariant v = m_pModel->item(index.row(), m_nId)->data();
198void CFrmActive::slotLoad()
202 m_pModel->removeRows(0, m_pModel->rowCount());
203 m_pAddToFavorite->setEnabled(m_Operates.size() > 0);
204 foreach(
auto c, m_Operates) {
205 QList<QStandardItem*> lstItem;
206 QStandardItem* pName =
new QStandardItem(c->
Icon(), c->
Name());
209 QStandardItem* pProtocol =
new QStandardItem(c->
Protocol());
210 lstItem << pProtocol;
211 QStandardItem* pType =
new QStandardItem(c->
GetTypeName());
213 QStandardItem* pId =
new QStandardItem(c->
Id());
218 m_pModel->appendRow(lstItem);
224 m_pTableView->resizeColumnToContents(0);
228void CFrmActive::slotViewChanged(
const QWidget *pView)
231 if(m_Operates.size() != m_pModel->rowCount())
233 foreach (
auto c, m_Operates) {
240 m_pTableView->selectRow(nIndex);
243void CFrmActive::slotAddToFavorite()
245 QItemSelectionModel* pSelect = m_pTableView->selectionModel();
246 QModelIndexList lstIndex = pSelect->selectedRows();
247 foreach(
auto index, lstIndex)
249 if(!index.isValid())
continue;
250 QVariant v = m_pModel->item(index.row(), m_nId)->data();
253 QString szName = c->
Name();
254 QIcon icon = c->
Icon();
256 QString szFile = c->GetSettingsFile();
257 emit sigAddToFavorite(szFile, szName, szDescription, icon);
virtual const QIcon Icon() const
Icon.
virtual QWidget * GetViewer()=0
Get Viewer.
virtual const QString Protocol() const
Protocol.
virtual const QString Name()
Name.
virtual const QString Description()
Description.
virtual const QString Id()
Identity.
virtual const QString GetTypeName() const
Get type name.
virtual QMenu * GetMenu(QWidget *parent=nullptr)
Get menu.