Skip to content

Commit 8769e47

Browse files
All items in MDF edit tree now working and is editable
1 parent 7e375f1 commit 8769e47

File tree

8 files changed

+386
-149
lines changed

8 files changed

+386
-149
lines changed

src/cdlgmdfbitlist.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@ CDlgMdfBitList::addRegisterBit(void)
282282

283283
CMDF_Bit* pbitnew = new CMDF_Bit();
284284
if (nullptr == pbitnew) {
285-
QMessageBox::critical(this, tr("MDF register bit information"), tr("Memory problem"));
286-
spdlog::error("MDF register information - Memory problem");
285+
QMessageBox::critical(this, tr("MDF bit information"), tr("Memory problem"));
286+
spdlog::error("MDF information - Memory problem");
287287
return;
288288
}
289289

@@ -292,17 +292,17 @@ CDlgMdfBitList::addRegisterBit(void)
292292

293293
CDlgMdfBit dlg(this);
294294
dlg.initDialogData(pbitnew);
295-
dlg.setWindowTitle(tr("Add register bit definition"));
295+
dlg.setWindowTitle(tr("Add bit definition"));
296296

297297
addbitdlg:
298298

299299
if (QDialog::Accepted == dlg.exec()) {
300300

301301
uint8_t mask;
302-
if ((mask = checkIfBitsOverlap(pbitnew))) {
303-
QMessageBox::warning(this, tr("Add new bit definition"), tr("Can not add bit definition. Bits overlap with already defined bits 0b%1").arg(mask, 8, 2, QChar('0')));
304-
goto addbitdlg;
305-
}
302+
// if ((mask = checkIfBitsOverlap(pbitnew))) {
303+
// QMessageBox::warning(this, tr("Add new bit definition"), tr("Can not add bit definition. Bits overlap with already defined bits 0b%1").arg(mask, 8, 2, QChar('0')));
304+
// goto addbitdlg;
305+
// }
306306

307307
// Get bitlist (for type)
308308
if (nullptr == (pbits = getBitList())) {
@@ -351,10 +351,10 @@ CDlgMdfBitList::editRegisterBit(void)
351351

352352
if (QDialog::Accepted == dlg.exec()) {
353353
uint8_t mask;
354-
if ((mask = checkIfBitsOverlap(pbit, true))) {
355-
QMessageBox::warning(this, tr("Edit bit definition"), tr("Can not add bit definition. Bits overlap with already defined bits 0b%1").arg(mask, 8, 2, QChar('0')));
356-
goto editbitdlg;
357-
}
354+
// if ((mask = checkIfBitsOverlap(pbit, true))) {
355+
// QMessageBox::warning(this, tr("Edit bit definition"), tr("Can not add bit definition. Bits overlap with already defined bits 0b%1").arg(mask, 8, 2, QChar('0')));
356+
// goto editbitdlg;
357+
// }
358358
ui->listBits->clear();
359359
renderBitItems();
360360
ui->listBits->setCurrentRow(idx);
@@ -403,10 +403,10 @@ CDlgMdfBitList::dupRegisterBit(void)
403403
dupbitdlg:
404404
if (QDialog::Accepted == dlg.exec()) {
405405
uint8_t mask;
406-
if ((mask = checkIfBitsOverlap(pbitnew))) {
407-
QMessageBox::warning(this, tr("Add new bit definition"), tr("Can not add bit definition. Bits overlap with already defined bits 0b%1").arg(mask, 8, 2, QChar('0')));
408-
goto dupbitdlg;
409-
}
406+
// if ((mask = checkIfBitsOverlap(pbitnew))) {
407+
// QMessageBox::warning(this, tr("Add new bit definition"), tr("Can not add bit definition. Bits overlap with already defined bits 0b%1").arg(mask, 8, 2, QChar('0')));
408+
// goto dupbitdlg;
409+
// }
410410

411411
// Get bitlist (for type)
412412
if (nullptr == (pbits = getBitList())) {

src/cdlgmdfbitlist.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class CDlgMdfBitList : public QDialog {
5757
Init dialog data
5858
@param pmdf Pointer to MDF object
5959
*/
60-
void initDialogData(CMDF_Object* preg, mdf_record_type type = mdf_type_register);
60+
void initDialogData(CMDF_Object* pobj, mdf_record_type type = mdf_type_register);
6161

6262
/*!
6363
Get bit list for set type

src/cdlgmdfbitlist.ui

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<x>0</x>
88
<y>0</y>
99
<width>730</width>
10-
<height>325</height>
10+
<height>305</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
@@ -16,9 +16,9 @@
1616
<widget class="QDialogButtonBox" name="buttonBox">
1717
<property name="geometry">
1818
<rect>
19-
<x>0</x>
20-
<y>290</y>
21-
<width>721</width>
19+
<x>10</x>
20+
<y>270</y>
21+
<width>711</width>
2222
<height>32</height>
2323
</rect>
2424
</property>

src/cdlgmdfvalue.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ public slots:
9393

9494
/// Pointer to bit information
9595
CMDF_Value* m_pvalue;
96+
97+
// Render data
98+
//std::map<uint8_t, CMDF_Bit*> m_bitmapValues;
9699
};
97100

98101
#endif // CDlgMdfValue_H

src/cdlgmdfvaluelist.cpp

Lines changed: 97 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,21 @@ CDlgMdfValueList::CDlgMdfValueList(QWidget* parent)
5757
: QDialog(parent)
5858
, ui(new Ui::CDlgMdfValueList)
5959
{
60-
m_preg = nullptr;
60+
m_pobj = nullptr;
6161

6262
ui->setupUi(this);
6363

6464
vscpworks* pworks = (vscpworks*)QCoreApplication::instance();
6565

66-
connect(ui->btnAddRegisterValue, &QToolButton::clicked, this, &CDlgMdfValueList::addRegisterValue);
67-
connect(ui->btnEditRegisterValue, &QToolButton::clicked, this, &CDlgMdfValueList::editRegisterValue);
68-
connect(ui->btnDupRegisterValue, &QToolButton::clicked, this, &CDlgMdfValueList::dupRegisterValue);
69-
connect(ui->btnDelRegisterValue, &QToolButton::clicked, this, &CDlgMdfValueList::deleteRegisterValue);
66+
connect(ui->btnAddRegisterValue, &QToolButton::clicked, this, &CDlgMdfValueList::addValue);
67+
connect(ui->btnEditRegisterValue, &QToolButton::clicked, this, &CDlgMdfValueList::editValue);
68+
connect(ui->btnDupRegisterValue, &QToolButton::clicked, this, &CDlgMdfValueList::dupValue);
69+
connect(ui->btnDelRegisterValue, &QToolButton::clicked, this, &CDlgMdfValueList::deleteValue);
7070

71-
connect(ui->listRegisterValues, &QListWidget::doubleClicked, this, &CDlgMdfValueList::editRegisterValue);
71+
connect(ui->listValues, &QListWidget::doubleClicked, this, &CDlgMdfValueList::editValue);
7272

7373
this->setFixedSize(this->size());
74+
7475
}
7576

7677
///////////////////////////////////////////////////////////////////////////////
@@ -87,18 +88,19 @@ CDlgMdfValueList::~CDlgMdfValueList()
8788
//
8889

8990
void
90-
CDlgMdfValueList::initDialogData(CMDF_Register* preg)
91+
CDlgMdfValueList::initDialogData(CMDF_Object* pobj, mdf_record_type type)
9192
{
9293
QString str;
9394

94-
if (nullptr == preg) {
95-
QMessageBox::critical(this, tr("MDF register value information"), tr("Invalid MDF register object"));
96-
spdlog::error("MDF register value information - Invalid MDF register object");
95+
if (nullptr == pobj) {
96+
QMessageBox::critical(this, tr("MDF value information"), tr("Invalid MDF object"));
97+
spdlog::error("MDF value information - Invalid MDF object");
9798
return;
9899
}
99100

100-
// Save register pointer and page
101-
m_preg = preg;
101+
// Save register pointer and type
102+
m_pobj = pobj;
103+
m_type = type;
102104

103105
// m_pmdf->getRegisterMap(m_page, pages);
104106
renderValueItems();
@@ -111,12 +113,18 @@ CDlgMdfValueList::initDialogData(CMDF_Register* preg)
111113
void
112114
CDlgMdfValueList::renderValueItems(void)
113115
{
114-
if (nullptr == m_preg) {
116+
if (nullptr == m_pobj) {
115117
return;
116118
}
117119

118-
ui->listRegisterValues->clear();
119-
std::deque<CMDF_Value*>* pvalues = m_preg->getListValues();
120+
ui->listValues->clear();
121+
std::deque<CMDF_Value*>* pvalues = getValueList();
122+
123+
if (nullptr == pvalues) {
124+
QMessageBox::critical(this, tr("APPNAME"), tr("Invalid firmware object"));
125+
spdlog::error("MDF values: Can't get valuelist");
126+
return;
127+
}
120128

121129
// If no enteries there is nothing to do
122130
if (!pvalues->size()) {
@@ -128,46 +136,82 @@ CDlgMdfValueList::renderValueItems(void)
128136
CMDF_Value* pvalue = *it;
129137
if (nullptr != pvalue) {
130138
QString str = QString("Value: %1").arg(pvalue->getName().c_str());
131-
ui->listRegisterValues->addItem(str);
139+
ui->listValues->addItem(str);
132140
// Set data to register index
133-
ui->listRegisterValues->item(ui->listRegisterValues->count() - 1)->setData(Qt::UserRole, idx);
141+
ui->listValues->item(ui->listValues->count() - 1)->setData(Qt::UserRole, idx);
134142
}
135143
idx++;
136144
}
137145
}
138146

139147
///////////////////////////////////////////////////////////////////////////////
140-
// addRegisterValue
148+
// getValueList
149+
//
150+
151+
std::deque<CMDF_Value*>*
152+
CDlgMdfValueList::getValueList(void)
153+
{
154+
std::deque<CMDF_Value*>* pvalues = nullptr;
155+
156+
// pbits = m_pobj->getListBits();
157+
if (mdf_type_register == m_type) {
158+
pvalues = ((CMDF_Register*)m_pobj)->getListValues();
159+
}
160+
else if (mdf_type_remotevar == m_type) {
161+
pvalues = ((CMDF_RemoteVariable*)m_pobj)->getListValues();
162+
}
163+
else if (mdf_type_action_param == m_type) {
164+
pvalues = ((CMDF_ActionParameter*)m_pobj)->getListValues();
165+
}
166+
else if (mdf_type_event_data_item == m_type) {
167+
pvalues = ((CMDF_EventData*)m_pobj)->getListValues();
168+
}
169+
// Bit definitions values
170+
else if ((mdf_type_bit_item == m_type) || (mdf_type_bit_sub_item == m_type)) {
171+
pvalues = ((CMDF_Bit*)m_pobj)->getListValues();
172+
}
173+
174+
return pvalues;
175+
}
176+
177+
178+
179+
///////////////////////////////////////////////////////////////////////////////
180+
// addValue
141181
//
142182

143183
void
144-
CDlgMdfValueList::addRegisterValue(void)
184+
CDlgMdfValueList::addValue(void)
145185
{
146186
bool ok;
147187
CMDF_Value* pvaluenew = new CMDF_Value();
148188
if (nullptr == pvaluenew) {
149-
QMessageBox::critical(this, tr("MDF register bit information"), tr("Memory problem"));
150-
spdlog::error("MDF register information - Memory problem");
189+
QMessageBox::critical(this, tr("MDF value information"), tr("Memory problem"));
190+
spdlog::error("MDF information - Memory problem");
151191
return;
152192
}
153193

154194
// Save the selected row
155-
int idx = ui->listRegisterValues->currentRow();
195+
int idx = ui->listValues->currentRow();
156196

157197
CDlgMdfValue dlg(this);
158198
dlg.initDialogData(pvaluenew);
159-
dlg.setWindowTitle(tr("Add register value"));
199+
dlg.setWindowTitle(tr("Add value"));
160200

161-
addbitdlg:
201+
addvaluedlg:
162202

163203
if (QDialog::Accepted == dlg.exec()) {
164-
165204
uint8_t mask;
166205
// if ((mask = checkIfBitsOverlap(pvaluenew))) {
167206
// QMessageBox::warning(this, tr("Add new bit definition"), tr("Can not add bit definition. Bits overlap with already defined bits 0b%1").arg(mask, 8, 2, QChar('0')));
168207
// goto addbitdlg;
169208
// }
170-
std::deque<CMDF_Value*>* pvalues = m_preg->getListValues();
209+
std::deque<CMDF_Value*>* pvalues = getValueList();
210+
if (nullptr == pvalues) {
211+
QMessageBox::warning(this, tr(APPNAME), tr("Unable to add value as there is no valuelist [%s] ").arg(static_cast<int>(m_type)));
212+
delete pvaluenew;
213+
return;
214+
}
171215
pvalues->push_back(pvaluenew);
172216
renderValueItems();
173217
}
@@ -177,21 +221,23 @@ CDlgMdfValueList::addRegisterValue(void)
177221
}
178222

179223
///////////////////////////////////////////////////////////////////////////////
180-
// editRegisterValue
224+
// editValue
181225
//
182226

183227
void
184-
CDlgMdfValueList::editRegisterValue(void)
228+
CDlgMdfValueList::editValue(void)
185229
{
186230
bool ok;
187231

188-
if (-1 != ui->listRegisterValues->currentRow()) {
232+
qDebug() << "Type = " << m_type;
233+
234+
if (-1 != ui->listValues->currentRow()) {
189235

190236
// Save the selected row
191-
int idx = ui->listRegisterValues->currentRow();
237+
int idx = ui->listValues->currentRow();
192238

193-
QListWidgetItem* pitem = ui->listRegisterValues->currentItem();
194-
CMDF_Value* pvalue = m_preg->getListValues()->at(pitem->data(Qt::UserRole).toUInt());
239+
QListWidgetItem* pitem = ui->listValues->currentItem();
240+
CMDF_Value* pvalue = getValueList()->at(pitem->data(Qt::UserRole).toUInt());
195241

196242
CDlgMdfValue dlg(this);
197243
dlg.initDialogData(pvalue);
@@ -204,9 +250,9 @@ CDlgMdfValueList::editRegisterValue(void)
204250
// QMessageBox::warning(this, tr("Edit register value"), tr("Can not add register value. Bits overlap with already defined bits 0b%1").arg(mask, 8, 2, QChar('0')));
205251
// goto editvaluedlg;
206252
// }
207-
ui->listRegisterValues->clear();
253+
ui->listValues->clear();
208254
renderValueItems();
209-
ui->listRegisterValues->setCurrentRow(idx);
255+
ui->listValues->setCurrentRow(idx);
210256
}
211257
}
212258
else {
@@ -215,16 +261,16 @@ CDlgMdfValueList::editRegisterValue(void)
215261
}
216262

217263
///////////////////////////////////////////////////////////////////////////////
218-
// dupRegisterValue
264+
// dupValue
219265
//
220266

221267
void
222-
CDlgMdfValueList::dupRegisterValue(void)
268+
CDlgMdfValueList::dupValue(void)
223269
{
224-
if (-1 != ui->listRegisterValues->currentRow()) {
270+
if (-1 != ui->listValues->currentRow()) {
225271

226272
// Save the selected row
227-
int idx = ui->listRegisterValues->currentRow();
273+
int idx = ui->listValues->currentRow();
228274

229275
// QListWidgetItem* pitem = ui->listRegisterBit->currentItem();
230276
// CMDF_Bit* preg = m_pmdf->getRegister(pitem->data(Qt::UserRole).toUInt(), m_page);
@@ -272,36 +318,36 @@ CDlgMdfValueList::dupRegisterValue(void)
272318
}
273319

274320
///////////////////////////////////////////////////////////////////////////////
275-
// deleteRegisterValue
321+
// deleteValue
276322
//
277323

278324
void
279-
CDlgMdfValueList::deleteRegisterValue(void)
325+
CDlgMdfValueList::deleteValue(void)
280326
{
281-
if (-1 != ui->listRegisterValues->currentRow()) {
327+
if (-1 != ui->listValues->currentRow()) {
282328

283329
// Save the row
284-
int idx = ui->listRegisterValues->currentRow();
330+
int idx = ui->listValues->currentRow();
285331

286-
QListWidgetItem* pitem = ui->listRegisterValues->currentItem();
287-
CMDF_Value* pvalue = m_preg->getListValues()->at(pitem->data(Qt::UserRole).toUInt());
332+
QListWidgetItem* pitem = ui->listValues->currentItem();
333+
CMDF_Value* pvalue = getValueList()->at(pitem->data(Qt::UserRole).toUInt());
288334

289-
std::deque<CMDF_Value*>::iterator it = m_preg->getListValues()->begin() + pitem->data(Qt::UserRole).toUInt();
290-
m_preg->getListValues()->erase(it);
335+
std::deque<CMDF_Value*>::iterator it = getValueList()->begin() + pitem->data(Qt::UserRole).toUInt();
336+
getValueList()->erase(it);
291337

292-
ui->listRegisterValues->clear();
338+
ui->listValues->clear();
293339
renderValueItems();
294340
int sel = idx;
295341
if (0 == idx) {
296342
sel = 0;
297343
}
298-
else if (m_preg->getListValues()->size() == idx) {
299-
sel = m_preg->getListValues()->size() - 1;
344+
else if (getValueList()->size() == idx) {
345+
sel = getValueList()->size() - 1;
300346
}
301347
else {
302348
sel = idx + 1;
303349
}
304-
ui->listRegisterValues->setCurrentRow(sel);
350+
ui->listValues->setCurrentRow(sel);
305351
}
306352
}
307353

@@ -313,7 +359,7 @@ void
313359
CDlgMdfValueList::accept()
314360
{
315361
std::string str;
316-
if (nullptr != m_preg) {
362+
if (nullptr != m_pobj) {
317363

318364
// str = ui->editName->text().toStdString();
319365
// m_pmdf->setName(str);

0 commit comments

Comments
 (0)