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 }