Different sections for auto-detected and manual Qt versions.

This commit is contained in:
con
2009-05-26 17:21:30 +02:00
parent c427858b7e
commit 2a101e53c0
4 changed files with 63 additions and 25 deletions

View File

@@ -87,9 +87,18 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<QtVersion *> ver
new Core::Utils::TreeWidgetColumnStretcher(m_ui->qtdirList, 1); new Core::Utils::TreeWidgetColumnStretcher(m_ui->qtdirList, 1);
// setup parent items for auto-detected and manual versions
m_ui->qtdirList->header()->setResizeMode(QHeaderView::ResizeToContents);
QTreeWidgetItem *autoItem = new QTreeWidgetItem(m_ui->qtdirList);
autoItem->setText(0, tr("Auto-detected"));
autoItem->setFirstColumnSpanned(true);
QTreeWidgetItem *manualItem = new QTreeWidgetItem(m_ui->qtdirList);
manualItem->setText(0, tr("Manual"));
manualItem->setFirstColumnSpanned(true);
for (int i = 0; i < m_versions.count(); ++i) { for (int i = 0; i < m_versions.count(); ++i) {
const QtVersion * const version = m_versions.at(i); const QtVersion * const version = m_versions.at(i);
QTreeWidgetItem *item = new QTreeWidgetItem(m_ui->qtdirList); QTreeWidgetItem *item = new QTreeWidgetItem(version->isSystemVersion()? autoItem : manualItem);
item->setText(0, version->name()); item->setText(0, version->name());
item->setText(1, QDir::toNativeSeparators(version->path())); item->setText(1, QDir::toNativeSeparators(version->path()));
item->setData(0, Qt::UserRole, version->uniqueId()); item->setData(0, Qt::UserRole, version->uniqueId());
@@ -107,6 +116,7 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<QtVersion *> ver
if (i == m_defaultVersion) if (i == m_defaultVersion)
m_ui->defaultCombo->setCurrentIndex(i); m_ui->defaultCombo->setCurrentIndex(i);
} }
m_ui->qtdirList->expandAll();
connect(m_ui->nameEdit, SIGNAL(textEdited(const QString &)), connect(m_ui->nameEdit, SIGNAL(textEdited(const QString &)),
this, SLOT(updateCurrentQtName())); this, SLOT(updateCurrentQtName()));
@@ -148,10 +158,10 @@ void QtOptionsPageWidget::buildDebuggingHelper()
{ {
// Find the qt version for this button.. // Find the qt version for this button..
QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem(); QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem();
if (!currentItem) int currentItemIndex = indexForTreeItem(currentItem);
if (currentItemIndex < 0)
return; return;
int currentItemIndex = m_ui->qtdirList->indexOfTopLevelItem(currentItem);
QtVersion *version = m_versions[currentItemIndex]; QtVersion *version = m_versions[currentItemIndex];
QString result = m_versions.at(currentItemIndex)->buildDebuggingHelperLibrary(); QString result = m_versions.at(currentItemIndex)->buildDebuggingHelperLibrary();
@@ -170,14 +180,14 @@ void QtOptionsPageWidget::buildDebuggingHelper()
void QtOptionsPageWidget::showDebuggingBuildLog() void QtOptionsPageWidget::showDebuggingBuildLog()
{ {
QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem(); QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem();
if (!currentItem)
return;
int currentItemIndex = m_ui->qtdirList->indexOfTopLevelItem(currentItem); int currentItemIndex = indexForTreeItem(currentItem);
if (currentItemIndex < 0)
return;
QDialog dlg; QDialog dlg;
Ui_ShowBuildLog ui; Ui_ShowBuildLog ui;
ui.setupUi(&dlg); ui.setupUi(&dlg);
ui.log->setPlainText(m_ui->qtdirList->topLevelItem(currentItemIndex)->data(2, Qt::UserRole).toString()); ui.log->setPlainText(currentItem->data(2, Qt::UserRole).toString());
dlg.exec(); dlg.exec();
} }
@@ -192,7 +202,7 @@ void QtOptionsPageWidget::addQtDir()
QtVersion *newVersion = new QtVersion(m_specifyNameString, m_specifyPathString); QtVersion *newVersion = new QtVersion(m_specifyNameString, m_specifyPathString);
m_versions.append(newVersion); m_versions.append(newVersion);
QTreeWidgetItem *item = new QTreeWidgetItem(m_ui->qtdirList); QTreeWidgetItem *item = new QTreeWidgetItem(m_ui->qtdirList->topLevelItem(1));
item->setText(0, newVersion->name()); item->setText(0, newVersion->name());
item->setText(1, QDir::toNativeSeparators(newVersion->path())); item->setText(1, QDir::toNativeSeparators(newVersion->path()));
item->setData(0, Qt::UserRole, newVersion->uniqueId()); item->setData(0, Qt::UserRole, newVersion->uniqueId());
@@ -210,7 +220,7 @@ void QtOptionsPageWidget::addQtDir()
void QtOptionsPageWidget::removeQtDir() void QtOptionsPageWidget::removeQtDir()
{ {
QTreeWidgetItem *item = m_ui->qtdirList->currentItem(); QTreeWidgetItem *item = m_ui->qtdirList->currentItem();
int index = m_ui->qtdirList->indexOfTopLevelItem(item); int index = indexForTreeItem(item);
if (index < 0) if (index < 0)
return; return;
@@ -229,9 +239,10 @@ void QtOptionsPageWidget::removeQtDir()
void QtOptionsPageWidget::updateState() void QtOptionsPageWidget::updateState()
{ {
bool enabled = (m_ui->qtdirList->currentItem() != 0); int currentIndex = indexForTreeItem(m_ui->qtdirList->currentItem());
bool enabled = (currentIndex >= 0);
bool isSystemVersion = (enabled bool isSystemVersion = (enabled
&& m_versions.at(m_ui->qtdirList->indexOfTopLevelItem(m_ui->qtdirList->currentItem()))->isSystemVersion()); && m_versions.at(currentIndex)->isSystemVersion());
m_ui->delButton->setEnabled(enabled && !isSystemVersion); m_ui->delButton->setEnabled(enabled && !isSystemVersion);
m_ui->nameEdit->setEnabled(enabled && !isSystemVersion); m_ui->nameEdit->setEnabled(enabled && !isSystemVersion);
m_ui->qtPath->setEnabled(enabled && !isSystemVersion); m_ui->qtPath->setEnabled(enabled && !isSystemVersion);
@@ -242,7 +253,7 @@ void QtOptionsPageWidget::updateState()
QtVersion *version = 0; QtVersion *version = 0;
if (enabled) if (enabled)
version = m_versions.at(m_ui->qtdirList->indexOfTopLevelItem(m_ui->qtdirList->currentItem())); version = m_versions.at(currentIndex);
if (version) { if (version) {
m_ui->rebuildButton->setEnabled(version->isValid()); m_ui->rebuildButton->setEnabled(version->isValid());
if (version->hasDebuggingHelper()) if (version->hasDebuggingHelper())
@@ -270,7 +281,12 @@ void QtOptionsPageWidget::makeMSVCVisible(bool visible)
void QtOptionsPageWidget::showEnvironmentPage(QTreeWidgetItem *item) void QtOptionsPageWidget::showEnvironmentPage(QTreeWidgetItem *item)
{ {
if (item) { if (item) {
int index = m_ui->qtdirList->indexOfTopLevelItem(item); int index = indexForTreeItem(item);
if (index < 0) {
makeMSVCVisible(false);
makeMingwVisible(false);
return;
}
m_ui->errorLabel->setText(""); m_ui->errorLabel->setText("");
ProjectExplorer::ToolChain::ToolChainType t = m_versions.at(index)->toolchainType(); ProjectExplorer::ToolChain::ToolChainType t = m_versions.at(index)->toolchainType();
if (t == ProjectExplorer::ToolChain::MinGW) { if (t == ProjectExplorer::ToolChain::MinGW) {
@@ -317,12 +333,25 @@ void QtOptionsPageWidget::showEnvironmentPage(QTreeWidgetItem *item)
} }
} }
int QtOptionsPageWidget::indexForTreeItem(QTreeWidgetItem *item) const
{
if (!item || !item->parent())
return -1;
int uniqueId = item->data(0, Qt::UserRole).toInt();
for (int index = 0; index < m_versions.size(); ++index) {
if (m_versions.at(index)->uniqueId() == uniqueId)
return index;
}
return -1;
}
void QtOptionsPageWidget::versionChanged(QTreeWidgetItem *item, QTreeWidgetItem *old) void QtOptionsPageWidget::versionChanged(QTreeWidgetItem *item, QTreeWidgetItem *old)
{ {
if (old) { if (old) {
fixQtVersionName(m_ui->qtdirList->indexOfTopLevelItem(old)); fixQtVersionName(indexForTreeItem(old));
} }
if (item) { int itemIndex = indexForTreeItem(item);
if (itemIndex >= 0) {
m_ui->nameEdit->setText(item->text(0)); m_ui->nameEdit->setText(item->text(0));
m_ui->qtPath->setPath(item->text(1)); m_ui->qtPath->setPath(item->text(1));
} else { } else {
@@ -375,7 +404,9 @@ void QtOptionsPageWidget::updateCurrentQtName()
{ {
QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem(); QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem();
Q_ASSERT(currentItem); Q_ASSERT(currentItem);
int currentItemIndex = m_ui->qtdirList->indexOfTopLevelItem(currentItem); int currentItemIndex = indexForTreeItem(currentItem);
if (currentItemIndex < 0)
return;
m_versions[currentItemIndex]->setName(m_ui->nameEdit->text()); m_versions[currentItemIndex]->setName(m_ui->nameEdit->text());
currentItem->setText(0, m_versions[currentItemIndex]->name()); currentItem->setText(0, m_versions[currentItemIndex]->name());
@@ -386,7 +417,7 @@ void QtOptionsPageWidget::updateCurrentQtName()
void QtOptionsPageWidget::finish() void QtOptionsPageWidget::finish()
{ {
if (QTreeWidgetItem *item = m_ui->qtdirList->currentItem()) if (QTreeWidgetItem *item = m_ui->qtdirList->currentItem())
fixQtVersionName(m_ui->qtdirList->indexOfTopLevelItem(item)); fixQtVersionName(indexForTreeItem(item));
} }
/* Checks that the qt version name is unique /* Checks that the qt version name is unique
@@ -395,6 +426,8 @@ void QtOptionsPageWidget::finish()
*/ */
void QtOptionsPageWidget::fixQtVersionName(int index) void QtOptionsPageWidget::fixQtVersionName(int index)
{ {
if (index < 0)
return;
int count = m_versions.count(); int count = m_versions.count();
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
if (i != index) { if (i != index) {
@@ -424,7 +457,9 @@ void QtOptionsPageWidget::updateCurrentQtPath()
{ {
QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem(); QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem();
Q_ASSERT(currentItem); Q_ASSERT(currentItem);
int currentItemIndex = m_ui->qtdirList->indexOfTopLevelItem(currentItem); int currentItemIndex = indexForTreeItem(currentItem);
if (currentItemIndex < 0)
return;
if (m_versions[currentItemIndex]->path() == m_ui->qtPath->path()) if (m_versions[currentItemIndex]->path() == m_ui->qtPath->path())
return; return;
m_versions[currentItemIndex]->setPath(m_ui->qtPath->path()); m_versions[currentItemIndex]->setPath(m_ui->qtPath->path());
@@ -455,7 +490,9 @@ void QtOptionsPageWidget::updateCurrentMingwDirectory()
{ {
QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem(); QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem();
Q_ASSERT(currentItem); Q_ASSERT(currentItem);
int currentItemIndex = m_ui->qtdirList->indexOfTopLevelItem(currentItem); int currentItemIndex = indexForTreeItem(currentItem);
if (currentItemIndex < 0)
return;
m_versions[currentItemIndex]->setMingwDirectory(m_ui->mingwPath->path()); m_versions[currentItemIndex]->setMingwDirectory(m_ui->mingwPath->path());
} }
@@ -464,7 +501,9 @@ void QtOptionsPageWidget::msvcVersionChanged()
const QString &msvcVersion = m_ui->msvcComboBox->currentText(); const QString &msvcVersion = m_ui->msvcComboBox->currentText();
QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem(); QTreeWidgetItem *currentItem = m_ui->qtdirList->currentItem();
Q_ASSERT(currentItem); Q_ASSERT(currentItem);
int currentItemIndex = m_ui->qtdirList->indexOfTopLevelItem(currentItem); int currentItemIndex = indexForTreeItem(currentItem);
if (currentItemIndex < 0)
return;
m_versions[currentItemIndex]->setMsvcVersion(msvcVersion); m_versions[currentItemIndex]->setMsvcVersion(msvcVersion);
} }

View File

@@ -60,6 +60,8 @@ private:
void showEnvironmentPage(QTreeWidgetItem * item); void showEnvironmentPage(QTreeWidgetItem * item);
void fixQtVersionName(int index); void fixQtVersionName(int index);
int indexForWidget(QWidget *debuggingHelperWidget) const; int indexForWidget(QWidget *debuggingHelperWidget) const;
int indexForTreeItem(QTreeWidgetItem *item) const;
Internal::Ui::QtVersionManager *m_ui; Internal::Ui::QtVersionManager *m_ui;
QList<QtVersion *> m_versions; QList<QtVersion *> m_versions;
int m_defaultVersion; int m_defaultVersion;

View File

@@ -285,13 +285,13 @@ void QtVersionManager::updateSystemVersion()
foreach (QtVersion *version, m_versions) { foreach (QtVersion *version, m_versions) {
if (version->isSystemVersion()) { if (version->isSystemVersion()) {
version->setPath(systemQtPath); version->setPath(systemQtPath);
version->setName(tr("Auto-detected Qt")); version->setName(tr("Qt in PATH"));
haveSystemVersion = true; haveSystemVersion = true;
} }
} }
if (haveSystemVersion) if (haveSystemVersion)
return; return;
QtVersion *version = new QtVersion(tr("Auto-detected Qt"), QtVersion *version = new QtVersion(tr("Qt in PATH"),
systemQtPath, systemQtPath,
getUniqueId(), getUniqueId(),
true); true);

View File

@@ -22,9 +22,6 @@
<property name="uniformRowHeights"> <property name="uniformRowHeights">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="columnCount"> <property name="columnCount">
<number>3</number> <number>3</number>
</property> </property>