2#include <QLoggingCategory>
6#include "FrmConnecters.h"
8static Q_LOGGING_CATEGORY(log,
"App.FrmConnecters")
14 RabbitCommon::CRecentMenu *pRecentMenu,
17 , m_pDockTitleBar(
nullptr)
18 , m_pConnect(pConnect)
19 , m_pDisconnect(pDisconnect)
20 , m_pRecentMenu(pRecentMenu)
21 , m_Connecters(Connecters)
22 , m_ParameterApp(parameterApp)
23 , m_pTableView(
nullptr)
30 setFocusPolicy(Qt::NoFocus);
32 setWindowTitle(tr(
"List active connections"));
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.GetDockListConnectersShowToolBar());
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 ptbConnect =
new QToolButton(m_pToolBar);
56 ptbConnect->setFocusPolicy(Qt::NoFocus);
57 ptbConnect->setPopupMode(QToolButton::InstantPopup);
59 ptbConnect->setMenu(m_pConnect);
60 ptbConnect->setIcon(m_pConnect->icon());
61 ptbConnect->setText(m_pConnect->title());
62 ptbConnect->setToolTip(m_pConnect->title());
63 ptbConnect->setStatusTip(m_pConnect->title());
64 m_pToolBar->addWidget(ptbConnect);
66 m_pToolBar->addAction(m_pDisconnect);
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_pConnect);
74 m_pMenu->addAction(m_pDisconnect);
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_pDisconnect);
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.SetDockListConnectersShowToolBar(a->isChecked());
86 m_ParameterApp.Save();
89 pShowToolBar->setCheckable(
true);
90 pShowToolBar->setChecked(m_ParameterApp.GetDockListConnectersShowToolBar());
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(m_nId,
new QStandardItem(tr(
"ID")));
121 slotLoadConnecters();
130 m_pTableView->horizontalHeader()->setSectionResizeMode(
131#
if defined(DEBUG) && !defined(Q_OS_ANDROID)
134 QHeaderView::Interactive);
141 QItemSelectionModel* pSelect = m_pTableView->selectionModel();
142 QModelIndexList lstIndex;
144 lstIndex = pSelect->selectedRows();
145 if(m_pModel->rowCount() > 0 && lstIndex.isEmpty())
147 m_pTableView->selectRow(0);
151CFrmConnecters::~CFrmConnecters()
154void CFrmConnecters::slotCustomContextMenu(
const QPoint &pos)
157 menu.addMenu(m_pRecentMenu);
158 menu.addMenu(m_pConnect);
159 menu.addAction(m_pDisconnect);
161 int r = m_pTableView->currentIndex().row();
162 if(-1 < r && r < m_Connecters.size())
164 auto c = m_Connecters[r];
166 auto m = c->GetMenu();
169 menu.addActions(m->actions());
172 menu.exec(mapToGlobal(pos));
175void CFrmConnecters::slotClicked(
const QModelIndex &index)
177 QVariant v = m_pModel->item(index.row(), m_nId)->data();
179 emit sigConnecterChanged(c);
182void CFrmConnecters::slotLoadConnecters()
186 m_pModel->removeRows(0, m_pModel->rowCount());
187 foreach(
auto c, m_Connecters) {
188 QList<QStandardItem*> lstItem;
189 QStandardItem* pName =
new QStandardItem(c->Icon(), c->Name());
190 pName->setToolTip(c->Description());
192 QStandardItem* pProtocol =
new QStandardItem(c->Protocol());
193 lstItem << pProtocol;
194 QStandardItem* pId =
new QStandardItem(c->Id());
199 m_pModel->appendRow(lstItem);
205 m_pTableView->resizeColumnToContents(0);
209void CFrmConnecters::slotViewChanged(
const QWidget *pView)
212 if(m_Connecters.size() != m_pModel->rowCount())
213 slotLoadConnecters();
214 foreach (
auto c, m_Connecters) {
216 if(c->GetViewer() == pView)
221 m_pTableView->selectRow(nIndex);