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
得到显示视图
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