| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #include "QCMakePresetComboBox.h"
- #include "QCMakePresetItemModel.h"
- QCMakePresetComboBox::QCMakePresetComboBox(QWidget* parent)
- : QComboBox(parent)
- {
- this->m_model = new QCMakePresetItemModel(this);
- this->setModel(this->m_model);
- QObject::connect(this->m_model, &QCMakePresetItemModel::modelAboutToBeReset,
- this, [this]() { this->m_resetting = true; });
- QObject::connect(this->m_model, &QCMakePresetItemModel::modelReset, this,
- [this]() {
- this->setPresetName(this->m_lastPreset);
- this->m_resetting = false;
- this->emitPresetChanged();
- });
- QObject::connect(
- this,
- static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
- this, [this](int /*row*/) {
- if (!this->m_resetting) {
- this->emitPresetChanged();
- }
- });
- }
- const QVector<QCMakePreset>& QCMakePresetComboBox::presets() const
- {
- return this->m_model->presets();
- }
- QString QCMakePresetComboBox::presetName() const
- {
- auto preset = this->currentData();
- if (preset.canConvert<QCMakePreset>()) {
- return preset.value<QCMakePreset>().name;
- }
- return QString{};
- }
- void QCMakePresetComboBox::setPresets(const QVector<QCMakePreset>& presets)
- {
- this->m_model->setPresets(presets);
- }
- void QCMakePresetComboBox::setPresetName(const QString& name)
- {
- this->setCurrentIndex(this->m_model->presetNameToRow(name));
- if (this->signalsBlocked()) {
- this->m_lastPreset = this->presetName();
- }
- }
- void QCMakePresetComboBox::emitPresetChanged()
- {
- if (this->presetName() != this->m_lastPreset) {
- emit this->presetChanged(this->presetName());
- this->m_lastPreset = this->presetName();
- }
- }
|