File indexing completed on 2024-05-12 17:11:42
0001 #include "qmlgeneratorvisitor.h" 0002 0003 #include "charactersheet/charactersheetitem.h" 0004 #include "charactersheet/controllers/fieldcontroller.h" 0005 #include "charactersheet/controllers/tablefield.h" 0006 0007 QString getPageManagement(FieldController* item, QString indent) 0008 { 0009 int page= item->page(); 0010 if(page >= 0) 0011 return QStringLiteral("%1 visible: sheetCtrl.currentPage == %5? true : false\n").arg(indent).arg(page); 0012 else if(item->fieldType() == CSItem::NEXTPAGE) 0013 return QStringLiteral("%1 visible: sheetCtrl.currentPage != root.maxPage\n").arg(indent); 0014 else if(item->fieldType() == CSItem::PREVIOUSPAGE) 0015 return QStringLiteral("%1 visible: sheetCtrl.currentPage != 0\n").arg(indent); 0016 else 0017 return QStringLiteral("%1 visible: true\n").arg(indent); 0018 } 0019 0020 QmlGeneratorVisitor::QmlGeneratorVisitor(QTextStream& out, TreeSheetItem* rootItem) : m_out(out), m_root(rootItem) 0021 { 0022 setIndentation(m_indentation); 0023 } 0024 0025 bool QmlGeneratorVisitor::isTable() const 0026 { 0027 return m_isTable; 0028 } 0029 0030 void QmlGeneratorVisitor::setIsTable(bool isTable) 0031 { 0032 m_isTable= isTable; 0033 } 0034 bool QmlGeneratorVisitor::generateTreeSheetItem() 0035 { 0036 for(int i= 0; i < m_root->childrenCount(); ++i) 0037 { 0038 auto child= m_root->childAt(i); 0039 if(child->itemType() == TreeSheetItem::FieldItem) 0040 { 0041 auto field= dynamic_cast<FieldController*>(child); 0042 if(field->generatedCode().isEmpty()) 0043 { 0044 switch(field->fieldType()) 0045 { 0046 case CSItem::TEXTINPUT: 0047 generateTextInput(field); 0048 break; 0049 case CSItem::TEXTFIELD: 0050 generateTextField(field); 0051 break; 0052 case CSItem::TEXTAREA: 0053 generateTextArea(field); 0054 break; 0055 case CSItem::SELECT: 0056 generateSelect(field); 0057 break; 0058 case CSItem::CHECKBOX: 0059 generateCheckBox(field); 0060 break; 0061 case CSItem::IMAGE: 0062 generateImage(field); 0063 break; 0064 case CSItem::DICEBUTTON: 0065 generateDiceButton(field); 0066 break; 0067 case CSItem::FUNCBUTTON: 0068 generateFuncButton(field); 0069 break; 0070 case CSItem::RLABEL: 0071 generateLabelField(field); 0072 break; 0073 case CSItem::TABLE: 0074 generateTable(field); 0075 break; 0076 case CSItem::WEBPAGE: 0077 generateWebPage(field); 0078 break; 0079 case CSItem::NEXTPAGE: 0080 generateChangePageBtn(field, true); 0081 break; 0082 case CSItem::PREVIOUSPAGE: 0083 generateChangePageBtn(field, false); 0084 break; 0085 case CSItem::SLIDER: 0086 generateSlider(field); 0087 break; 0088 case CSItem::HIDDEN: 0089 generateHidden(field); 0090 break; 0091 } 0092 } 0093 else 0094 { 0095 m_out << field->generatedCode(); 0096 } 0097 } 0098 else if(child->itemType() == TreeSheetItem::TableItem) 0099 { 0100 auto field= dynamic_cast<TableField*>(child); 0101 if(nullptr != field) 0102 { 0103 if(field->generatedCode().isEmpty()) 0104 { 0105 generateTable(field); 0106 } 0107 else 0108 m_out << field->generatedCode(); 0109 } 0110 } 0111 } 0112 return true; 0113 } 0114 0115 bool QmlGeneratorVisitor::generateQmlCodeForRoot() 0116 { 0117 if(nullptr == m_root) 0118 return false; 0119 0120 if(m_root->itemType() == TreeSheetItem::FieldItem) 0121 { 0122 auto field= dynamic_cast<FieldController*>(m_root); 0123 switch(field->fieldType()) 0124 { 0125 case CSItem::TEXTINPUT: 0126 generateTextInput(field); 0127 break; 0128 case CSItem::TEXTFIELD: 0129 generateTextField(field); 0130 break; 0131 case CSItem::TEXTAREA: 0132 generateTextArea(field); 0133 break; 0134 case CSItem::SELECT: 0135 generateSelect(field); 0136 break; 0137 case CSItem::CHECKBOX: 0138 generateCheckBox(field); 0139 break; 0140 case CSItem::IMAGE: 0141 generateImage(field); 0142 break; 0143 case CSItem::DICEBUTTON: 0144 generateDiceButton(field); 0145 break; 0146 case CSItem::FUNCBUTTON: 0147 generateFuncButton(field); 0148 break; 0149 case CSItem::RLABEL: 0150 generateLabelField(field); 0151 break; 0152 case CSItem::TABLE: 0153 generateTable(field); 0154 break; 0155 case CSItem::WEBPAGE: 0156 generateWebPage(field); 0157 break; 0158 case CSItem::NEXTPAGE: 0159 generateChangePageBtn(field, true); 0160 break; 0161 case CSItem::PREVIOUSPAGE: 0162 generateChangePageBtn(field, false); 0163 break; 0164 case CSItem::SLIDER: 0165 generateSlider(field); 0166 break; 0167 case CSItem::HIDDEN: 0168 generateHidden(field); 0169 break; 0170 } 0171 } 0172 else if(m_root->itemType() == TreeSheetItem::TableItem) 0173 { 0174 auto field= dynamic_cast<TableField*>(m_root); 0175 if(field) 0176 generateTable(field); 0177 } 0178 return true; 0179 } 0180 0181 bool QmlGeneratorVisitor::generateTextInput(FieldController* item) 0182 { 0183 if(!item) 0184 return false; 0185 0186 QString text("%5TextInputField {//%1\n" 0187 "%6" 0188 "%5 text: %2.value\n" 0189 "%5 color:\"%3\"\n" 0190 "%5 backgroundColor: \"%4\"\n" 0191 + getPageManagement(item, m_indenSpace) + "%5 readOnly: %2.readOnly\n" + getToolTip(item) 0192 + generatePosition(item) + generateAlignment(item) + generateFont(item->font(), false) 0193 + "%5 onTextChanged: {\n" 0194 "%5 %2.value = text\n" 0195 "%5 }\n" 0196 "%5}\n"); 0197 0198 m_out << text.arg(item->label()) //%1 0199 .arg(getId(item)) 0200 .arg(item->textColor().name(QColor::HexArgb)) 0201 .arg(item->bgColor().name(QColor::HexArgb)) 0202 .arg(m_indenSpace) //%5 0203 .arg(m_isTable ? QStringLiteral("") : 0204 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))); 0205 0206 return true; 0207 } 0208 0209 bool QmlGeneratorVisitor::generateTextArea(FieldController* item) 0210 { 0211 if(!item) 0212 return false; 0213 0214 QString text("%5TextAreaField {//%1\n" 0215 "%6" 0216 "%5 text: %2.value\n" 0217 "%5 color:\"%3\"\n" 0218 "%5 backgroundColor: \"%4\"\n" 0219 "%5 field: %7\n" 0220 + getPageManagement(item, m_indenSpace) + "%5 readOnly: %2.readOnly\n" + getToolTip(item) 0221 + generatePosition(item) + generateAlignment(item) + generateFont(item->font(), false) + "%5}\n"); 0222 /* + "%5 onEditingFinished: {\n" 0223 "%5 %2.value = text\n" 0224 "%5 }\n"*/ 0225 0226 m_out << text.arg(item->label()) //%1 0227 .arg(getId(item)) 0228 .arg(item->textColor().name(QColor::HexArgb)) 0229 .arg(item->bgColor().name(QColor::HexArgb)) 0230 .arg(m_indenSpace) //%5 0231 .arg(m_isTable ? QStringLiteral("") : 0232 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))) 0233 .arg(getId(item)); 0234 0235 return true; 0236 } 0237 0238 bool QmlGeneratorVisitor::generateTextField(FieldController* item) 0239 { 0240 if(!item) 0241 return false; 0242 0243 QString text("%5TextFieldField {//%1\n" 0244 "%6" 0245 "%5 text: %2.value\n" 0246 "%5 color:\"%3\"\n" 0247 "%5 backgroundColor: \"%4\"\n" 0248 + getPageManagement(item, m_indenSpace) + "%5 readOnly: %2.readOnly\n" + getToolTip(item) 0249 + generatePosition(item) + generateAlignment(item) + generateFont(item->font(), false) 0250 + "%5 onTextEdited: {\n" 0251 "%5 %2.value = text\n" 0252 "%5 }\n" 0253 "%5}\n"); 0254 0255 m_out << text.arg(item->label()) //%1 0256 .arg(getId(item)) 0257 .arg(item->textColor().name(QColor::HexArgb)) 0258 .arg(item->bgColor().name(QColor::HexArgb)) 0259 .arg(m_indenSpace) //%5 0260 .arg(m_isTable ? QStringLiteral("") : 0261 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))); 0262 0263 return true; 0264 } 0265 bool QmlGeneratorVisitor::generateLabelField(FieldController* item) 0266 { 0267 if(!item) 0268 return false; 0269 0270 QString text("%5RLabel {//%1\n" 0271 "%6" 0272 "%5 text: %2.value\n" 0273 "%5 color:\"%3\"\n" 0274 "%5 backgroundColor: \"%4\"\n" 0275 + getPageManagement(item, m_indenSpace) + "%5 readOnly: %2.readOnly\n" + getToolTip(item) 0276 + generatePosition(item) + generateAlignment(item) + generateFont(item->font(), true) + "%5}\n"); 0277 0278 m_out << text.arg(item->label()) //%1 0279 .arg(getId(item)) 0280 .arg(item->textColor().name(QColor::HexArgb)) 0281 .arg(item->bgColor().name(QColor::HexArgb)) 0282 .arg(m_indenSpace) //%5 0283 .arg(m_isTable ? QStringLiteral("") : 0284 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))); 0285 0286 return true; 0287 } 0288 0289 bool QmlGeneratorVisitor::generateSlider(FieldController* item) 0290 { 0291 if(!item) 0292 return false; 0293 0294 QString text("%5SliderField {//%1\n" 0295 "%6" 0296 "%5 value: parseFloat(%2.value)\n" 0297 "%5 field: %2\n" 0298 "%5 from: %7\n" 0299 "%5 to: %8\n" 0300 "%5 backgroundColor:\"%4\"\n" 0301 "%5 valueColor: \"%3\"\n" 0302 + getPageManagement(item, m_indenSpace) + "%5 readOnly: %2.readOnly\n" + getToolTip(item) 0303 + generatePosition(item) + "%5}\n"); 0304 0305 auto vals= item->availableValues(); 0306 qreal start= 0.; 0307 qreal end= 100.; 0308 if(vals.size() == 2) 0309 { 0310 start= vals[0].toDouble(); 0311 end= vals[1].toDouble(); 0312 } 0313 0314 m_out << text.arg(item->label()) //%1 0315 .arg(getId(item)) 0316 .arg(item->textColor().name(QColor::HexArgb)) 0317 .arg(item->bgColor().name(QColor::HexArgb)) 0318 .arg(m_indenSpace) //%5 0319 .arg(m_isTable ? QStringLiteral("") : 0320 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))) 0321 .arg(start) 0322 .arg(end); 0323 0324 return true; 0325 } 0326 0327 bool QmlGeneratorVisitor::generateHidden(FieldController* item) 0328 { 0329 if(!item) 0330 return false; 0331 0332 // WARNING no aligment and font for selectfield. 0333 QString text("%3Item {//%1\n" 0334 "%4" 0335 "%3 property string value: %2.value\n" 0336 + generatePosition(item) + "%3}\n"); 0337 0338 m_out << text.arg(item->label()) //%1 0339 .arg(getId(item)) 0340 .arg(m_indenSpace) //%3 0341 .arg(m_isTable ? QStringLiteral("") : 0342 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))); 0343 ; 0344 0345 return true; 0346 } 0347 bool QmlGeneratorVisitor::generateSelect(FieldController* item) 0348 { 0349 if(!item) 0350 return false; 0351 0352 // WARNING no aligment and font for selectfield. 0353 QString text("%6SelectField {//%1\n" 0354 "%7" 0355 "%6 selected: %2.value\n" 0356 "%6 availableValues:%5\n" 0357 "%6 currentIndex: combo.find(text)\n" 0358 "%6 textColor:\"%3\"\n" 0359 "%6 color: \"%4\"\n" 0360 "%6 onCurrentIndexChanged:{\n" 0361 "%6 if(%2.value !== currentIndex)\n" 0362 "%6 {\n" 0363 "%6 %2.value = currentIndex\n" 0364 "%6 }\n" 0365 "%6 }\n" 0366 + getPageManagement(item, m_indenSpace) + "%6 enabled: !%2.readOnly\n" + getToolTip(item) 0367 + generatePosition(item) + "%6}\n"); 0368 0369 m_out << text.arg(item->label()) //%1 0370 .arg(getId(item)) 0371 .arg(item->textColor().name(QColor::HexArgb)) 0372 .arg(item->bgColor().name(QColor::HexArgb)) 0373 .arg(QStringLiteral("[\"%1\"]").arg(item->availableValues().join("\",\""))) //%5 0374 .arg(m_indenSpace) 0375 .arg(m_isTable ? QStringLiteral("") : 0376 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))); 0377 return true; 0378 } 0379 0380 bool QmlGeneratorVisitor::generateCheckBox(FieldController* item) 0381 { 0382 if(!item) 0383 return false; 0384 0385 QString text("%5CheckBoxField {//%1\n" 0386 "%6" 0387 "%5 field: %2\n" 0388 "%5 text: %2.value\n" 0389 "%5 color:\"%3\"\n" 0390 "%5 borderColor: \"%4\"\n" 0391 + getPageManagement(item, m_indenSpace) + "%5 readOnly: %2.readOnly\n" + getToolTip(item) 0392 + generatePosition(item) + "%5}\n"); 0393 0394 m_out << text.arg(item->label()) //%1 0395 .arg(getId(item)) 0396 .arg(item->bgColor().name(QColor::HexArgb)) 0397 .arg(item->textColor().name(QColor::HexArgb)) 0398 .arg(m_indenSpace) //%5 0399 .arg(m_isTable ? QStringLiteral("") : 0400 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))); 0401 0402 return true; 0403 } 0404 0405 bool QmlGeneratorVisitor::generateFuncButton(FieldController* item) 0406 { 0407 if(!item) 0408 return false; 0409 0410 QString text("%6DiceButton {//%1\n" 0411 "%7" 0412 "%6 command: %2.value\n" 0413 "%6 text: %2.label\n" 0414 "%6 pressedColor: \"%3\"\n" 0415 "%6 color: \"%4\"\n" 0416 "%6 backgroundColor: \"%8\"\n" 0417 "%6 textColor: \"%9\"\n" 0418 + getPageManagement(item, m_indenSpace) + "%6 readOnly: %2.readOnly\n" + getToolTip(item) 0419 + generatePosition(item) + generateAlignment(item) + generateFont(item->font(), false) 0420 + "%6 onClicked: {\n" 0421 "%6 %5\n" 0422 "%6 }\n" 0423 "%6}\n"); 0424 0425 m_out << text.arg(item->label()) //%1 0426 .arg(getId(item)) 0427 .arg(item->textColor().name(QColor::HexArgb)) 0428 .arg(item->bgColor().name(QColor::HexArgb)) 0429 .arg(item->value()) //%5 0430 .arg(m_indenSpace) 0431 .arg(m_isTable ? QStringLiteral("") : 0432 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))) 0433 .arg(item->bgColor().name(QColor::HexArgb)) 0434 .arg(item->textColor().name(QColor::HexArgb)); 0435 0436 return true; 0437 } 0438 0439 bool QmlGeneratorVisitor::generateDiceButton(FieldController* item) 0440 { 0441 if(!item) 0442 return false; 0443 0444 QString text("%6DiceButton {//%1\n" 0445 "%7" 0446 "%6 command: %2.value\n" 0447 "%6 text: %2.label ? %2.label: \"Dice\"\n" 0448 "%6 pressedColor: \"%3\"\n" 0449 "%6 color: \"%4\"\n" 0450 "%6 backgroundColor: \"%8\"\n" 0451 "%6 textColor: \"%9\"\n" 0452 + getPageManagement(item, m_indenSpace) + "%6 readOnly: %2.readOnly\n" + getToolTip(item) 0453 + generatePosition(item) + generateAlignment(item) + generateFont(item->font(), false) 0454 + "%6 onClicked:rollDiceCmd(%2.value,%5)\n" 0455 "%6}\n"); 0456 0457 m_out << text.arg(item->label()) //%1 0458 .arg(getId(item)) 0459 .arg(item->textColor().lighter().name(QColor::HexArgb)) 0460 .arg(item->bgColor().lighter().name(QColor::HexArgb)) 0461 .arg(item->aliasEnabled() ? "true" : "false") //%5 0462 .arg(m_indenSpace) 0463 .arg(m_isTable ? QStringLiteral("") : 0464 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))) 0465 .arg(item->bgColor().name(QColor::HexArgb)) 0466 .arg(item->textColor().name(QColor::HexArgb)); 0467 0468 return true; 0469 } 0470 0471 bool QmlGeneratorVisitor::generateImage(FieldController* item) 0472 { 0473 if(!item) 0474 return false; 0475 0476 QString text("%4ImageField {//%1\n" 0477 "%5" 0478 "%4 source: %2.value\n" 0479 "%4 color: \"%3\"\n" 0480 + getPageManagement(item, m_indenSpace) + "%4 readOnly: %2.readOnly\n" + generatePosition(item) 0481 + "%4}\n"); 0482 0483 m_out << text.arg(item->label()) //%1 0484 .arg(getId(item)) 0485 .arg(item->bgColor().name(QColor::HexArgb)) 0486 .arg(m_indenSpace) //%5 0487 .arg(m_isTable ? QStringLiteral("") : 0488 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))); 0489 0490 return true; 0491 } 0492 0493 bool QmlGeneratorVisitor::generateTable(FieldController* item) 0494 { 0495 auto tablefield= dynamic_cast<TableField*>(item); 0496 if(!tablefield) 0497 return false; 0498 0499 tablefield->fillModel(); 0500 0501 QString node("%1Table{//%2\n" 0502 "%1 id: _%3list\n" 0503 "%1 field: %3\n" 0504 + generatePosition(item) + getPageManagement(item, m_indenSpace) 0505 + "%1 maxRow:%4\n" 0506 "%1 model: %3.model\n" 0507 "%1 delegate: RowLayout {\n" 0508 "%1 height: _%3list.height/_%3list.maxRow\n" 0509 "%1 width: _%3list.width\n" 0510 "%1 spacing:0\n"); 0511 0512 QString end("%1 }\n" 0513 "%1}\n"); 0514 0515 m_out << node.arg(m_indenSpace).arg(item->label()).arg(tablefield->id()).arg(tablefield->getMaxVisibleRowCount()); 0516 0517 QmlGeneratorVisitor visitor(m_out, tablefield->getRoot()); 0518 visitor.setIndentation(m_indentation + 2); 0519 visitor.setIsTable(true); 0520 visitor.generateTreeSheetItem(); 0521 0522 m_out << end.arg(m_indenSpace); 0523 0524 return true; 0525 } 0526 0527 bool QmlGeneratorVisitor::generateChangePageBtn(FieldController* item, bool next) 0528 { 0529 if(!item) 0530 return false; 0531 0532 QString node("%1PageButton{//%2\n" 0533 "%1 next:%3\n" 0534 "%1 text: %4.value\n" 0535 + getToolTip(item) + generatePosition(item) + getPageManagement(item, m_indenSpace) 0536 + "%1 showImage:true\n" 0537 "%1 onClicked: {\n" 0538 "%1 root.page += next ? 1 : -1\n" 0539 "%1 }\n" 0540 "%1}\n"); 0541 0542 m_out << node.arg(m_indenSpace).arg(item->label()).arg(next ? "true" : "false").arg(getId(item)); 0543 0544 return true; 0545 } 0546 0547 bool QmlGeneratorVisitor::generateWebPage(FieldController* item) 0548 { 0549 if(!item) 0550 return false; 0551 0552 QString node("%1WebView{//%2\n" 0553 "%4" 0554 "%1 url:%3.value\n" 0555 + getToolTip(item) + generatePosition(item) + getPageManagement(item, m_indenSpace) 0556 + "%1 readOnly: %3.readOnly\n" 0557 "%1}\n"); 0558 0559 m_out << node.arg(m_indenSpace) 0560 .arg(item->label()) 0561 .arg(getId(item)) 0562 .arg(m_isTable ? QStringLiteral("") : 0563 QStringLiteral("%1 id: _%2\n").arg(m_indenSpace).arg(getId(item))); 0564 0565 return true; 0566 } 0567 0568 QString QmlGeneratorVisitor::generatePosition(FieldController* item) 0569 { 0570 if(m_isTable) 0571 { 0572 QString op("%2 Layout.fillHeight: true\n" 0573 "%2 Layout.preferredWidth: %1*root.realscale\n"); 0574 0575 return op.arg(item->width()).arg(m_indenSpace); 0576 } 0577 QString positionLines("%5 x:%1*imagebg.realscale\n" 0578 "%5 y:%2*imagebg.realscale\n" 0579 "%5 width:%3*imagebg.realscale\n" 0580 "%5 height:%4*imagebg.realscale\n"); 0581 0582 return positionLines.arg(item->x()).arg(item->y()).arg(item->width()).arg(item->height()).arg(m_indenSpace); 0583 } 0584 0585 QString QmlGeneratorVisitor::generateAlignment(FieldController* item) 0586 { 0587 QPair<QString, QString> pair= item->getTextAlign(); 0588 QString alignments("%3 hAlign: %1\n" 0589 "%3 vAlign: %2\n"); 0590 0591 return alignments.arg(pair.first).arg(pair.second).arg(m_indenSpace); 0592 } 0593 0594 QString QmlGeneratorVisitor::generateFont(const QFont& font, bool fitfont) 0595 { 0596 QString fontStr("%8 font.family: \"%1\"\n" 0597 "%8 font.bold: %2\n" 0598 "%8 font.italic: %3\n" 0599 "%8 font.underline: %4\n" 0600 "%8 font.pointSize: %5\n" 0601 "%8 font.overline: %6\n" 0602 "%8 font.strikeout: %7\n"); 0603 0604 if(fitfont) 0605 { 0606 fontStr.append("%8 fontSizeMode: Text.Fit\n"); 0607 fontStr.replace("font.pointSize", "minimumPixelSize"); 0608 } 0609 return fontStr.arg(font.family()) 0610 .arg(font.bold() ? QStringLiteral("true") : QStringLiteral("false")) 0611 .arg(font.italic() ? QStringLiteral("true") : QStringLiteral("false")) 0612 .arg(font.underline() ? QStringLiteral("true") : QStringLiteral("false")) 0613 .arg(font.pointSize()) 0614 .arg(font.overline() ? QStringLiteral("true") : QStringLiteral("false")) 0615 .arg(font.strikeOut() ? QStringLiteral("true") : QStringLiteral("false")) 0616 .arg(m_indenSpace); 0617 } 0618 0619 int QmlGeneratorVisitor::indentation() const 0620 { 0621 return m_indentation; 0622 } 0623 0624 void QmlGeneratorVisitor::setIndentation(int indentation) 0625 { 0626 m_indentation= indentation; 0627 m_indenSpace.clear(); 0628 for(int i= 0; i < indentation * 4; ++i) 0629 { 0630 m_indenSpace+= " "; 0631 } 0632 } 0633 0634 QString QmlGeneratorVisitor::getId(FieldController* item) 0635 { 0636 QString result= item->id(); 0637 if(m_isTable) 0638 { 0639 result= item->label(); 0640 } 0641 return result; 0642 } 0643 0644 QString QmlGeneratorVisitor::getToolTip(FieldController* item) 0645 { 0646 QString tooltip= item->getTooltip(); 0647 return QStringLiteral("%1 tooltip:\"%2\"\n").arg(m_indenSpace).arg(tooltip); 0648 }