GH-1148 New instance name is either version or modpack 'base name'

Default names now use the placeholder text in the new instance dialog.
This commit is contained in:
Petr Mrázek 2015-08-21 09:00:35 +02:00
parent 875c707358
commit 40ed2654c7
2 changed files with 43 additions and 10 deletions

View File

@ -64,14 +64,18 @@ NewInstanceDialog::NewInstanceDialog(QWidget *parent)
resize(minimumSizeHint()); resize(minimumSizeHint());
layout()->setSizeConstraint(QLayout::SetFixedSize); layout()->setSizeConstraint(QLayout::SetFixedSize);
setSelectedVersion(MMC->minecraftlist()->getRecommended(), true); setSelectedVersion(MMC->minecraftlist()->getRecommended());
InstIconKey = "default"; InstIconKey = "default";
ui->iconButton->setIcon(ENV.icons()->getIcon(InstIconKey)); ui->iconButton->setIcon(ENV.icons()->getIcon(InstIconKey));
ui->modpackEdit->setValidator(new UrlValidator(ui->modpackEdit)); ui->modpackEdit->setValidator(new UrlValidator(ui->modpackEdit));
ui->instNameTextBox->setAlignment(Qt::AlignHCenter);
connect(ui->modpackEdit, &QLineEdit::textChanged, this, &NewInstanceDialog::updateDialogState); connect(ui->modpackEdit, &QLineEdit::textChanged, this, &NewInstanceDialog::updateDialogState);
connect(ui->modpackBox, &QRadioButton::clicked, this, &NewInstanceDialog::updateDialogState); connect(ui->modpackBox, &QRadioButton::clicked, this, &NewInstanceDialog::updateDialogState);
connect(ui->versionBox, &QRadioButton::clicked, this, &NewInstanceDialog::updateDialogState); connect(ui->versionBox, &QRadioButton::clicked, this, &NewInstanceDialog::updateDialogState);
connect(ui->versionTextBox, &QLineEdit::textChanged, this, &NewInstanceDialog::updateDialogState);
auto groups = MMC->instances()->getGroups().toSet(); auto groups = MMC->instances()->getGroups().toSet();
auto groupList = QStringList(groups.toList()); auto groupList = QStringList(groups.toList());
@ -88,6 +92,10 @@ NewInstanceDialog::NewInstanceDialog(QWidget *parent)
} }
ui->groupBox->setCurrentIndex(index); ui->groupBox->setCurrentIndex(index);
ui->groupBox->lineEdit()->setPlaceholderText(tr("No group")); ui->groupBox->lineEdit()->setPlaceholderText(tr("No group"));
ui->buttonBox->setFocus();
originalPlaceholderText = ui->instNameTextBox->placeholderText();
updateDialogState();
} }
NewInstanceDialog::~NewInstanceDialog() NewInstanceDialog::~NewInstanceDialog()
@ -97,36 +105,60 @@ NewInstanceDialog::~NewInstanceDialog()
void NewInstanceDialog::updateDialogState() void NewInstanceDialog::updateDialogState()
{ {
QString suggestedName;
if(ui->versionBox->isChecked())
{
suggestedName = ui->versionTextBox->text();
}
else if (ui->modpackBox->isChecked())
{
auto url = QUrl::fromUserInput(ui->modpackEdit->text());
QFileInfo fi(url.fileName());
suggestedName = fi.baseName();
}
if(suggestedName.isEmpty())
{
ui->instNameTextBox->setPlaceholderText(originalPlaceholderText);
}
else
{
ui->instNameTextBox->setPlaceholderText(suggestedName);
}
bool allowOK = !instName().isEmpty() && bool allowOK = !instName().isEmpty() &&
(ui->versionBox->isChecked() && m_selectedVersion || (ui->versionBox->isChecked() && m_selectedVersion ||
(ui->modpackBox->isChecked() && ui->modpackEdit->hasAcceptableInput())); (ui->modpackBox->isChecked() && ui->modpackEdit->hasAcceptableInput()));
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(allowOK); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(allowOK);
} }
void NewInstanceDialog::setSelectedVersion(BaseVersionPtr version, bool initial) void NewInstanceDialog::setSelectedVersion(BaseVersionPtr version)
{ {
m_selectedVersion = version; m_selectedVersion = version;
if (m_selectedVersion) if (m_selectedVersion)
{ {
ui->versionTextBox->setText(version->name()); ui->versionTextBox->setText(version->name());
if(ui->instNameTextBox->text().isEmpty() && !initial)
{
ui->instNameTextBox->setText(version->name());
}
} }
else else
{ {
ui->versionTextBox->setText(""); ui->versionTextBox->setText("");
} }
updateDialogState();
} }
QString NewInstanceDialog::instName() const QString NewInstanceDialog::instName() const
{ {
return ui->instNameTextBox->text(); auto result = ui->instNameTextBox->text();
if(result.size())
{
return result;
}
result = ui->instNameTextBox->placeholderText();
if(result.size() && result != originalPlaceholderText)
{
return result;
}
return QString();
} }
QString NewInstanceDialog::instGroup() const QString NewInstanceDialog::instGroup() const
{ {
return ui->groupBox->currentText(); return ui->groupBox->currentText();

View File

@ -34,7 +34,7 @@ public:
void updateDialogState(); void updateDialogState();
void setSelectedVersion(BaseVersionPtr version, bool initial = false); void setSelectedVersion(BaseVersionPtr version);
void loadVersionList(); void loadVersionList();
@ -56,4 +56,5 @@ private:
BaseVersionPtr m_selectedVersion; BaseVersionPtr m_selectedVersion;
QString InstIconKey; QString InstIconKey;
QString originalPlaceholderText;
}; };