qpidctrl  0.7.1
Public Slots | Public Member Functions | Private Attributes | List of all members
QPidDeviceListWidget Class Reference

#include <qpiddevicelistwidget.h>

Inheritance diagram for QPidDeviceListWidget:
Inheritance graph

Public Slots

void updateDevicesList ()
 
void doCreateNewDevice ()
 
void doDeleteDevice ()
 
void onDeviceListItemChanged (QTableWidgetItem *item)
 
void doConfigureDevice (int dev)
 
void doSetDefaultDevice (int dev)
 
void printMessage (QString msg, QDateTime ts=QDateTime::currentDateTime())
 

Public Member Functions

 QPidDeviceListWidget (QWidget *parent=0)
 
void setController (QPidControllerWPtr ctl)
 

Private Attributes

QPidControllerWPtr m_Controller
 
QSignalMapper * m_DeviceConfigMapper
 
QSignalMapper * m_DeviceDefaultMapper
 

Detailed Description

Definition at line 11 of file qpiddevicelistwidget.h.

Constructor & Destructor Documentation

QPidDeviceListWidget::QPidDeviceListWidget ( QWidget *  parent = 0)
explicit

Definition at line 13 of file qpiddevicelistwidget.cpp.

References doConfigureDevice(), doSetDefaultDevice(), m_DeviceConfigMapper, m_DeviceDefaultMapper, and onDeviceListItemChanged().

13  :
14  QTableWidget(parent),
15  m_DeviceConfigMapper(new QSignalMapper(this)),
16  m_DeviceDefaultMapper(new QSignalMapper(this))
17 {
18  connect(m_DeviceConfigMapper, SIGNAL(mapped(int)), this, SLOT(doConfigureDevice(int)));
19  connect(m_DeviceDefaultMapper, SIGNAL(mapped(int)), this, SLOT(doSetDefaultDevice(int)));
20  connect(this, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(onDeviceListItemChanged(QTableWidgetItem*)));
21 }
void onDeviceListItemChanged(QTableWidgetItem *item)
QSignalMapper * m_DeviceDefaultMapper
QSignalMapper * m_DeviceConfigMapper

Member Function Documentation

void QPidDeviceListWidget::doConfigureDevice ( int  dev)
slot

Definition at line 173 of file qpiddevicelistwidget.cpp.

References m_Controller.

Referenced by QPidDeviceListWidget().

174 {
176 
177  if (ctrl) {
178  ctrl->configurationDialog(dev);
179  }
180 }
QSharedPointer< QPidController > QPidControllerPtr
QPidControllerWPtr m_Controller
void QPidDeviceListWidget::doCreateNewDevice ( )
slot

Definition at line 94 of file qpiddevicelistwidget.cpp.

References QPidDevice::deviceLongTypeName, QPidDevice::deviceTypeCount(), m_Controller, and printMessage().

95 {
96  QMenu *menu = new QMenu(this);
97 
98  menu->addAction("Create New Device...");
99  menu->addSeparator();
100 
101  for (int i=1; i<QPidDevice::deviceTypeCount(); i++) {
102  menu->addAction(QPidDevice::deviceLongTypeName(i));
103  }
104 
105  QAction *act = menu->exec(QCursor::pos());
106 
107  if (act) {
108  int res = 0;
109  for (int i=1; i<QPidDevice::deviceTypeCount(); i++) {
110  if (act->text() == QPidDevice::deviceLongTypeName(i)) {
111  res = i;
112  break;
113  }
114  }
115 
117 
118  if (ctrl && res) {
119  printMessage(tr("Create new device type %1 = %2").arg(res).arg(QPidDevice::deviceLongTypeName(res)));
120 
121  ctrl->appendDevice(res, "Untitled Device");
122  }
123  }
124 }
static int deviceTypeCount()
Definition: qpiddevice.cpp:116
QString deviceLongTypeName
Definition: qpiddevice.h:130
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
QSharedPointer< QPidController > QPidControllerPtr
QPidControllerWPtr m_Controller
void QPidDeviceListWidget::doDeleteDevice ( )
slot

Definition at line 126 of file qpiddevicelistwidget.cpp.

References m_Controller.

127 {
129 
130  if (ctrl) {
131  QList<QTableWidgetSelectionRange> selected = selectedRanges();
132  QVector<int> toDelete(ctrl->countDevices());
133 
134  toDelete.fill(0);
135 
136  foreach (QTableWidgetSelectionRange index, selected) {
137  for (int r1 = index.topRow(); r1 <= index.bottomRow(); r1++) {
138  toDelete[r1] = 1;
139  }
140  }
141 
142  QString msg = "Do you really want to delete\n";
143  QVector<int> devList;
144 
145  for (int i=0; i<toDelete.count(); i++) {
146  if (toDelete.value(i)) {
147  msg += tr("Device %1 : %2 \"%3\"\n")
148  .arg(i)
149  .arg(ctrl->getDevice(i)->get_DeviceLongTypeName())
150  .arg(ctrl->getDevice(i)->get_DeviceName());
151 
152  devList.append(i);
153  }
154  }
155 
156  if (QMessageBox::question(this, "Delete Devices?", msg, QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) {
157  ctrl->deleteDevices(devList);
158  }
159  }
160 }
QSharedPointer< QPidController > QPidControllerPtr
QPidControllerWPtr m_Controller
void QPidDeviceListWidget::doSetDefaultDevice ( int  dev)
slot

Definition at line 182 of file qpiddevicelistwidget.cpp.

References m_Controller.

Referenced by QPidDeviceListWidget().

183 {
184  // printMessage(tr("New default device is %1").arg(dev));
185 
187 
188  if (ctrl) {
189  QString msg = "Do you really want to change the current controller to\n";
190 
191  msg += tr("Device %1 : %2 \"%3\"\n")
192  .arg(dev)
193  .arg(ctrl->getDevice(dev)->get_DeviceLongTypeName())
194  .arg(ctrl->getDevice(dev)->get_DeviceName());
195 
196  if (QMessageBox::question(this, "Change current device?", msg, QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) {
197  ctrl->setDefaultDevice(dev);
198  }
199  }
200 }
QSharedPointer< QPidController > QPidControllerPtr
QPidControllerWPtr m_Controller
void QPidDeviceListWidget::onDeviceListItemChanged ( QTableWidgetItem *  item)
slot

Definition at line 162 of file qpiddevicelistwidget.cpp.

References m_Controller.

Referenced by QPidDeviceListWidget().

163 {
164 // printMessage(tr("Device List Item [%1,%2] Changed to %3").arg(item->row()).arg(item->column()).arg(item->text()));
165 
167 
168  if (ctrl && item->column() == 3) { // A device name has been changed...
169  ctrl->setDeviceName(item->row(),item->text());
170  }
171 }
QSharedPointer< QPidController > QPidControllerPtr
QPidControllerWPtr m_Controller
void QPidDeviceListWidget::printMessage ( QString  msg,
QDateTime  ts = QDateTime::currentDateTime() 
)
slot

Definition at line 30 of file qpiddevicelistwidget.cpp.

Referenced by doCreateNewDevice().

31 {
32  QPidMainWindow *win = qobject_cast<QPidMainWindow*>(parent());
33 
34  if (win) {
35  win -> printMessage(msg, ts);
36  }
37 }
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
void QPidDeviceListWidget::setController ( QPidControllerWPtr  ctl)

Definition at line 23 of file qpiddevicelistwidget.cpp.

References m_Controller, and updateDevicesList().

24 {
25  m_Controller = ctl;
26 
27  connect(m_Controller.data(), SIGNAL(deviceListChanged()), this, SLOT(updateDevicesList())/*, Qt::QueuedConnection*/);
28 }
QPidControllerWPtr m_Controller
void QPidDeviceListWidget::updateDevicesList ( )
slot

Definition at line 39 of file qpiddevicelistwidget.cpp.

References m_Controller, m_DeviceConfigMapper, and m_DeviceDefaultMapper.

Referenced by setController().

40 {
41  setRowCount(0);
42  setColumnCount(4);
43 
45 
46  if (ctrl) {
47  for (int n=0; n<ctrl->countDevices(); n++) {
48  QPidDevicePtr dev = ctrl->getDevice(n);
49 
50  if (dev) {
51  setRowCount(n+1);
52 
53  QRadioButton *defaultButton = new QRadioButton();
54 
55  if (n == ctrl->defaultDeviceNumber()) {
56  defaultButton->setChecked(true);
57  }
58 
59  connect(defaultButton, SIGNAL(clicked()), m_DeviceDefaultMapper, SLOT(map()));
60  m_DeviceDefaultMapper->setMapping(defaultButton, n);
61 
62  QPushButton *configButton = new QPushButton("Configure...");
63 
64  connect(configButton, SIGNAL(clicked()), m_DeviceConfigMapper, SLOT(map()));
65  m_DeviceConfigMapper->setMapping(configButton, n);
66 
67  int col = 0;
68 
69  QTableWidgetItem *devType = new QTableWidgetItem(dev->get_DeviceLongTypeName());
70  QTableWidgetItem *devName = new QTableWidgetItem(dev->get_DeviceName());
71 
72  devType->setFlags(Qt::ItemIsEnabled|Qt::ItemIsSelectable);
73  devName->setFlags(Qt::ItemIsEnabled|Qt::ItemIsSelectable|Qt::ItemIsEditable);
74 
75  bool b = blockSignals(true);
76 
77  setCellWidget(n, col++, defaultButton);
78  setCellWidget(n, col++, configButton);
79  setItem(n, col++, devType);
80  setItem(n, col++, devName);
81 
82  QTableWidgetItem *item= new QTableWidgetItem(tr("%1").arg(n));
83 
84  setVerticalHeaderItem(n, item);
85 
86  blockSignals(b);
87  }
88  }
89  }
90 
91  resizeColumnsToContents();
92 }
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QSharedPointer< QPidController > QPidControllerPtr
QPidControllerWPtr m_Controller
QSignalMapper * m_DeviceDefaultMapper
QSignalMapper * m_DeviceConfigMapper

Member Data Documentation

QPidControllerWPtr QPidDeviceListWidget::m_Controller
private
QSignalMapper* QPidDeviceListWidget::m_DeviceConfigMapper
private

Definition at line 35 of file qpiddevicelistwidget.h.

Referenced by QPidDeviceListWidget(), and updateDevicesList().

QSignalMapper* QPidDeviceListWidget::m_DeviceDefaultMapper
private

Definition at line 36 of file qpiddevicelistwidget.h.

Referenced by QPidDeviceListWidget(), and updateDevicesList().


The documentation for this class was generated from the following files: