| 2233 | } |
| 2234 | |
| 2235 | void SpreadsheetView::fillSelectedCellsWithRowNumbers() { |
| 2236 | const auto& columns = selectedColumns(false); |
| 2237 | if (columns.isEmpty()) |
| 2238 | return; |
| 2239 | |
| 2240 | int first = firstSelectedRow(); |
| 2241 | if (first < 0) |
| 2242 | return; |
| 2243 | int last = lastSelectedRow(); |
| 2244 | |
| 2245 | WAIT_CURSOR; |
| 2246 | m_spreadsheet->beginMacro(i18n("%1: fill cells with row numbers", m_spreadsheet->name())); |
| 2247 | for (auto* col_ptr : columns) { |
| 2248 | int col = m_spreadsheet->indexOfChild<Column>(col_ptr); |
| 2249 | col_ptr->setSuppressDataChangedSignal(true); |
| 2250 | switch (col_ptr->columnMode()) { |
| 2251 | case AbstractColumn::ColumnMode::Double: { |
| 2252 | QVector<double> results(last - first + 1); |
| 2253 | for (int row = first; row <= last; row++) |
| 2254 | if (isCellSelected(row, col)) |
| 2255 | results[row - first] = row + 1; |
| 2256 | else |
| 2257 | results[row - first] = col_ptr->valueAt(row); |
| 2258 | col_ptr->replaceValues(first, results); |
| 2259 | break; |
| 2260 | } |
| 2261 | case AbstractColumn::ColumnMode::Integer: { |
| 2262 | QVector<int> results(last - first + 1); |
| 2263 | for (int row = first; row <= last; row++) |
| 2264 | if (isCellSelected(row, col)) |
| 2265 | results[row - first] = row + 1; |
| 2266 | else |
| 2267 | results[row - first] = col_ptr->integerAt(row); |
| 2268 | col_ptr->replaceInteger(first, results); |
| 2269 | break; |
| 2270 | } |
| 2271 | case AbstractColumn::ColumnMode::BigInt: { |
| 2272 | QVector<qint64> results(last - first + 1); |
| 2273 | for (int row = first; row <= last; row++) |
| 2274 | if (isCellSelected(row, col)) |
| 2275 | results[row - first] = row + 1; |
| 2276 | else |
| 2277 | results[row - first] = col_ptr->bigIntAt(row); |
| 2278 | col_ptr->replaceBigInt(first, results); |
| 2279 | break; |
| 2280 | } |
| 2281 | case AbstractColumn::ColumnMode::Text: { |
| 2282 | QVector<QString> results; |
| 2283 | for (int row = first; row <= last; row++) |
| 2284 | if (isCellSelected(row, col)) |
| 2285 | results << QString::number(row + 1); |
| 2286 | else |
| 2287 | results << col_ptr->textAt(row); |
| 2288 | col_ptr->replaceTexts(first, results); |
| 2289 | break; |
| 2290 | } |
| 2291 | // TODO: handle other modes |
| 2292 | case AbstractColumn::ColumnMode::DateTime: |
nothing calls this directly
no test coverage detected