| 149 | } |
| 150 | |
| 151 | void GM_Settings::loadScripts() |
| 152 | { |
| 153 | disconnect(ui->listWidget, &QListWidget::itemChanged, |
| 154 | this, &GM_Settings::itemChanged); |
| 155 | |
| 156 | ui->listWidget->clear(); |
| 157 | |
| 158 | const auto allScripts = m_manager->allScripts(); |
| 159 | for (GM_Script* script : allScripts) { |
| 160 | auto* item = new QListWidgetItem(ui->listWidget); |
| 161 | item->setText(script->name()); |
| 162 | item->setIcon(script->icon()); |
| 163 | item->setFlags(item->flags() | Qt::ItemIsUserCheckable); |
| 164 | item->setCheckState(script->isEnabled() ? Qt::Checked : Qt::Unchecked); |
| 165 | item->setData(Qt::UserRole + 10, QVariant::fromValue((void*)script)); |
| 166 | |
| 167 | connect(script, &GM_Script::updatingChanged, this, [this]() { |
| 168 | ui->listWidget->viewport()->update(); |
| 169 | }); |
| 170 | |
| 171 | ui->listWidget->addItem(item); |
| 172 | } |
| 173 | |
| 174 | ui->listWidget->sortItems(); |
| 175 | |
| 176 | bool itemMoved; |
| 177 | do { |
| 178 | itemMoved = false; |
| 179 | for (int i = 0; i < ui->listWidget->count(); ++i) { |
| 180 | QListWidgetItem* topItem = ui->listWidget->item(i); |
| 181 | QListWidgetItem* bottomItem = ui->listWidget->item(i + 1); |
| 182 | if (!topItem || !bottomItem) { |
| 183 | continue; |
| 184 | } |
| 185 | |
| 186 | if (topItem->checkState() == Qt::Unchecked && bottomItem->checkState() == Qt::Checked) { |
| 187 | QListWidgetItem* item = ui->listWidget->takeItem(i + 1); |
| 188 | ui->listWidget->insertItem(i, item); |
| 189 | itemMoved = true; |
| 190 | } |
| 191 | } |
| 192 | } |
| 193 | while (itemMoved); |
| 194 | |
| 195 | connect(ui->listWidget, &QListWidget::itemChanged, this, &GM_Settings::itemChanged); |
| 196 | } |
| 197 | |
| 198 | GM_Script* GM_Settings::getScript(QListWidgetItem* item) |
| 199 | { |
nothing calls this directly
no test coverage detected