| 91 | } |
| 92 | |
| 93 | bool ConfigIO::readLine(const QString &line, |
| 94 | QPair<QString, QVariant> &out) |
| 95 | { |
| 96 | if (line.trimmed().isEmpty() || line.trimmed()[0] == '#' || line.trimmed()[0] == '[' || !line.contains('=')) |
| 97 | { |
| 98 | return false; // Skip commented lines |
| 99 | } |
| 100 | |
| 101 | auto delimiterInlineComment = line.indexOf('#'); // Look for config properties mixed up with comments |
| 102 | auto extractedProperty = line.mid(0, delimiterInlineComment); |
| 103 | auto delimiterPos = extractedProperty.indexOf('='); |
| 104 | auto name = extractedProperty.mid(0, delimiterPos); |
| 105 | auto value = extractedProperty.mid(delimiterPos + 1); |
| 106 | QString qname = name.trimmed(); |
| 107 | QString qvalue = value.trimmed(); |
| 108 | |
| 109 | if (qvalue == "true") |
| 110 | { |
| 111 | out = QPair<QString, QVariant>(qname, true); |
| 112 | } |
| 113 | else if (qvalue == "false") |
| 114 | { |
| 115 | out = QPair<QString, QVariant>(qname, false); |
| 116 | } |
| 117 | else |
| 118 | { |
| 119 | out = QPair<QString, QVariant>(qname, qvalue); |
| 120 | } |
| 121 | |
| 122 | return true; |
| 123 | } |