forked from qt-creator/qt-creator
TargetSetupPage: Add CheckBox to select/deselect all kits
Change-Id: I46990751002d4193a51b0ce919a181ff026ddd49 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
committed by
Takumi ASAKI
parent
0d61cf7cf0
commit
e9bd72bd0f
@@ -50,6 +50,7 @@
|
|||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QScrollArea>
|
#include <QScrollArea>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
#include <QCheckBox>
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -64,6 +65,7 @@ public:
|
|||||||
QLabel *descriptionLabel;
|
QLabel *descriptionLabel;
|
||||||
QLabel *noValidKitLabel;
|
QLabel *noValidKitLabel;
|
||||||
QLabel *optionHintLabel;
|
QLabel *optionHintLabel;
|
||||||
|
QCheckBox *allKitsCheckBox;
|
||||||
|
|
||||||
void setupUi(QWidget *q)
|
void setupUi(QWidget *q)
|
||||||
{
|
{
|
||||||
@@ -89,6 +91,10 @@ public:
|
|||||||
optionHintLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
|
optionHintLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
|
||||||
optionHintLabel->setVisible(false);
|
optionHintLabel->setVisible(false);
|
||||||
|
|
||||||
|
allKitsCheckBox = new QCheckBox(setupTargetPage);
|
||||||
|
allKitsCheckBox->setTristate(true);
|
||||||
|
allKitsCheckBox->setText(TargetSetupPage::tr("Select all kits"));
|
||||||
|
|
||||||
centralWidget = new QWidget(setupTargetPage);
|
centralWidget = new QWidget(setupTargetPage);
|
||||||
QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||||
policy.setHorizontalStretch(0);
|
policy.setHorizontalStretch(0);
|
||||||
@@ -115,6 +121,7 @@ public:
|
|||||||
verticalLayout_2->addWidget(noValidKitLabel);
|
verticalLayout_2->addWidget(noValidKitLabel);
|
||||||
verticalLayout_2->addWidget(descriptionLabel);
|
verticalLayout_2->addWidget(descriptionLabel);
|
||||||
verticalLayout_2->addWidget(optionHintLabel);
|
verticalLayout_2->addWidget(optionHintLabel);
|
||||||
|
verticalLayout_2->addWidget(allKitsCheckBox);
|
||||||
verticalLayout_2->addWidget(centralWidget);
|
verticalLayout_2->addWidget(centralWidget);
|
||||||
verticalLayout_2->addWidget(scrollAreaWidget);
|
verticalLayout_2->addWidget(scrollAreaWidget);
|
||||||
|
|
||||||
@@ -124,6 +131,9 @@ public:
|
|||||||
|
|
||||||
QObject::connect(optionHintLabel, SIGNAL(linkActivated(QString)),
|
QObject::connect(optionHintLabel, SIGNAL(linkActivated(QString)),
|
||||||
q, SLOT(openOptions()));
|
q, SLOT(openOptions()));
|
||||||
|
|
||||||
|
QObject::connect(allKitsCheckBox, SIGNAL(clicked()),
|
||||||
|
q, SLOT(changeAllKitsSelections()));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -243,8 +253,10 @@ bool TargetSetupPage::isKitSelected(Core::Id id) const
|
|||||||
void TargetSetupPage::setKitSelected(Core::Id id, bool selected)
|
void TargetSetupPage::setKitSelected(Core::Id id, bool selected)
|
||||||
{
|
{
|
||||||
TargetSetupWidget *widget = m_widgets.value(id);
|
TargetSetupWidget *widget = m_widgets.value(id);
|
||||||
if (widget)
|
if (widget) {
|
||||||
widget->setKitSelected(selected);
|
widget->setKitSelected(selected);
|
||||||
|
kitSelectionChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TargetSetupPage::isComplete() const
|
bool TargetSetupPage::isComplete() const
|
||||||
@@ -289,6 +301,8 @@ void TargetSetupPage::reset()
|
|||||||
|
|
||||||
m_widgets.clear();
|
m_widgets.clear();
|
||||||
m_firstWidget = 0;
|
m_firstWidget = 0;
|
||||||
|
|
||||||
|
m_ui->allKitsCheckBox->setChecked(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TargetSetupPage::setProjectPath(const QString &path)
|
void TargetSetupPage::setProjectPath(const QString &path)
|
||||||
@@ -401,8 +415,10 @@ void TargetSetupPage::selectAtLeastOneKit()
|
|||||||
Kit *defaultKit = KitManager::defaultKit();
|
Kit *defaultKit = KitManager::defaultKit();
|
||||||
if (defaultKit)
|
if (defaultKit)
|
||||||
widget = m_widgets.value(defaultKit->id(), m_firstWidget);
|
widget = m_widgets.value(defaultKit->id(), m_firstWidget);
|
||||||
if (widget)
|
if (widget) {
|
||||||
widget->setKitSelected(true);
|
widget->setKitSelected(true);
|
||||||
|
kitSelectionChanged();
|
||||||
|
}
|
||||||
m_firstWidget = 0;
|
m_firstWidget = 0;
|
||||||
}
|
}
|
||||||
emit completeChanged(); // Is this necessary?
|
emit completeChanged(); // Is this necessary?
|
||||||
@@ -417,6 +433,7 @@ void TargetSetupPage::updateVisibility()
|
|||||||
bool hasKits = !m_widgets.isEmpty();
|
bool hasKits = !m_widgets.isEmpty();
|
||||||
m_ui->noValidKitLabel->setVisible(!hasKits);
|
m_ui->noValidKitLabel->setVisible(!hasKits);
|
||||||
m_ui->optionHintLabel->setVisible(m_forceOptionHint || !hasKits);
|
m_ui->optionHintLabel->setVisible(m_forceOptionHint || !hasKits);
|
||||||
|
m_ui->allKitsCheckBox->setVisible(hasKits);
|
||||||
|
|
||||||
emit completeChanged();
|
emit completeChanged();
|
||||||
}
|
}
|
||||||
@@ -433,6 +450,34 @@ void TargetSetupPage::import(const Utils::FileName &path)
|
|||||||
import(path, false);
|
import(path, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TargetSetupPage::kitSelectionChanged()
|
||||||
|
{
|
||||||
|
int selected = 0;
|
||||||
|
int deselected = 0;
|
||||||
|
foreach (TargetSetupWidget *widget, m_widgets) {
|
||||||
|
if (widget->isKitSelected())
|
||||||
|
++selected;
|
||||||
|
else
|
||||||
|
++deselected;
|
||||||
|
}
|
||||||
|
if (selected > 0 && deselected > 0)
|
||||||
|
m_ui->allKitsCheckBox->setCheckState(Qt::PartiallyChecked);
|
||||||
|
else if (selected > 0 && deselected == 0)
|
||||||
|
m_ui->allKitsCheckBox->setCheckState(Qt::Checked);
|
||||||
|
else
|
||||||
|
m_ui->allKitsCheckBox->setCheckState(Qt::Unchecked);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TargetSetupPage::changeAllKitsSelections()
|
||||||
|
{
|
||||||
|
if (m_ui->allKitsCheckBox->checkState() == Qt::PartiallyChecked)
|
||||||
|
m_ui->allKitsCheckBox->setCheckState(Qt::Checked);
|
||||||
|
bool checked = m_ui->allKitsCheckBox->isChecked();
|
||||||
|
foreach (TargetSetupWidget *widget, m_widgets)
|
||||||
|
widget->setKitSelected(checked);
|
||||||
|
emit completeChanged();
|
||||||
|
}
|
||||||
|
|
||||||
bool TargetSetupPage::isUpdating() const
|
bool TargetSetupPage::isUpdating() const
|
||||||
{
|
{
|
||||||
if (m_importer)
|
if (m_importer)
|
||||||
@@ -462,6 +507,7 @@ void TargetSetupPage::import(const Utils::FileName &path, bool silent)
|
|||||||
widget->addBuildInfo(info, true);
|
widget->addBuildInfo(info, true);
|
||||||
widget->setKitSelected(true);
|
widget->setKitSelected(true);
|
||||||
widget->expandWidget();
|
widget->expandWidget();
|
||||||
|
kitSelectionChanged();
|
||||||
}
|
}
|
||||||
emit completeChanged();
|
emit completeChanged();
|
||||||
}
|
}
|
||||||
@@ -475,6 +521,7 @@ void TargetSetupPage::removeWidget(Kit *k)
|
|||||||
m_firstWidget = 0;
|
m_firstWidget = 0;
|
||||||
widget->deleteLater();
|
widget->deleteLater();
|
||||||
m_widgets.remove(k->id());
|
m_widgets.remove(k->id());
|
||||||
|
kitSelectionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
TargetSetupWidget *TargetSetupPage::addWidget(Kit *k)
|
TargetSetupWidget *TargetSetupPage::addWidget(Kit *k)
|
||||||
@@ -499,6 +546,8 @@ TargetSetupWidget *TargetSetupPage::addWidget(Kit *k)
|
|||||||
|
|
||||||
widget->setKitSelected(m_preferredMatcher && m_preferredMatcher->matches(k));
|
widget->setKitSelected(m_preferredMatcher && m_preferredMatcher->matches(k));
|
||||||
m_widgets.insert(k->id(), widget);
|
m_widgets.insert(k->id(), widget);
|
||||||
|
connect(widget, SIGNAL(selectedToggled()),
|
||||||
|
this, SLOT(kitSelectionChanged()));
|
||||||
m_baseLayout->addWidget(widget);
|
m_baseLayout->addWidget(widget);
|
||||||
|
|
||||||
m_baseLayout->addWidget(m_importWidget);
|
m_baseLayout->addWidget(m_importWidget);
|
||||||
@@ -512,6 +561,8 @@ TargetSetupWidget *TargetSetupPage::addWidget(Kit *k)
|
|||||||
if (!m_firstWidget)
|
if (!m_firstWidget)
|
||||||
m_firstWidget = widget;
|
m_firstWidget = widget;
|
||||||
|
|
||||||
|
kitSelectionChanged();
|
||||||
|
|
||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,9 @@ private slots:
|
|||||||
void openOptions();
|
void openOptions();
|
||||||
void import(const Utils::FileName &path);
|
void import(const Utils::FileName &path);
|
||||||
|
|
||||||
|
void kitSelectionChanged();
|
||||||
|
void changeAllKitsSelections();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool isUpdating() const;
|
bool isUpdating() const;
|
||||||
void selectAtLeastOneKit();
|
void selectAtLeastOneKit();
|
||||||
|
|||||||
Reference in New Issue
Block a user