| 139 | } |
| 140 | |
| 141 | void OutputPage::prepareForm(const SourceFileTemplate& fileTemplate) |
| 142 | { |
| 143 | // First clear any existing file configurations |
| 144 | // This can happen when going back and forth between assistant pages |
| 145 | d->fileIdentifiers.clear(); |
| 146 | d->defaultUrls.clear(); |
| 147 | d->lowerCaseUrls.clear(); |
| 148 | |
| 149 | while (d->output->urlFormLayout->count() > 0) |
| 150 | { |
| 151 | d->output->urlFormLayout->takeAt(0); |
| 152 | } |
| 153 | while (d->output->positionFormLayout->count() > 0) |
| 154 | { |
| 155 | d->output->positionFormLayout->takeAt(0); |
| 156 | } |
| 157 | |
| 158 | qDeleteAll(d->outputFiles); |
| 159 | qDeleteAll(d->outputLines); |
| 160 | qDeleteAll(d->outputColumns); |
| 161 | qDeleteAll(d->labels); |
| 162 | |
| 163 | d->outputFiles.clear(); |
| 164 | d->outputLines.clear(); |
| 165 | d->outputColumns.clear(); |
| 166 | d->labels.clear(); |
| 167 | |
| 168 | const auto outputFiles = fileTemplate.outputFiles(); |
| 169 | |
| 170 | const int outputFilesCount = outputFiles.count(); |
| 171 | d->output->urlGroupBox->setTitle(i18ncp("@title:group", "Output File", "Output Files", outputFilesCount)); |
| 172 | d->output->positionGroupBox->setTitle(i18ncp("@title:group", "Location within Existing File", "Location within Existing Files", outputFilesCount)); |
| 173 | |
| 174 | for (const SourceFileTemplate::OutputFile& file : outputFiles) { |
| 175 | const QString id = file.identifier; |
| 176 | d->fileIdentifiers << id; |
| 177 | |
| 178 | const QString fileLabelText = i18nc("@label:chooser file name arg", "%1:", file.label); |
| 179 | auto* label = new QLabel(fileLabelText, this); |
| 180 | d->labels << label; |
| 181 | auto* requester = new KUrlRequester(this); |
| 182 | requester->setMode( KFile::File | KFile::LocalOnly ); |
| 183 | |
| 184 | connect(requester, &KUrlRequester::textChanged, this, [this, id] () { d->updateFileRange(id); }); |
| 185 | |
| 186 | d->output->urlFormLayout->addRow(label, requester); |
| 187 | d->outputFiles.insert(file.identifier, requester); |
| 188 | |
| 189 | label = new QLabel(fileLabelText, this); |
| 190 | d->labels << label; |
| 191 | auto* layout = new QHBoxLayout; |
| 192 | |
| 193 | auto line = new QSpinBox(this); |
| 194 | line->setPrefix(i18n("Line: ")); |
| 195 | line->setValue(0); |
| 196 | line->setMinimum(0); |
| 197 | layout->addWidget(line); |
| 198 |
no test coverage detected