Changed: Read version from client and display it

This commit is contained in:
kervala 2016-03-12 21:58:53 +01:00
parent b4c0c8f921
commit 1f999fc420
2 changed files with 56 additions and 21 deletions

View file

@ -93,6 +93,10 @@ void CProfilesDialog::displayProfile(int index)
argumentsEdit->setText(profile.arguments); argumentsEdit->setText(profile.arguments);
commentsEdit->setPlainText(profile.comments); commentsEdit->setPlainText(profile.comments);
directoryPathLabel->setText(CConfigFile::getInstance()->getProfileDirectory()); directoryPathLabel->setText(CConfigFile::getInstance()->getProfileDirectory());
desktopShortcutCheckBox->setChecked(profile.desktopShortcut);
menuShortcutCheckBox->setChecked(profile.menuShortcut);
updateExecutableVersion(index);
m_currentProfileIndex = index; m_currentProfileIndex = index;
} }
@ -123,6 +127,55 @@ void CProfilesDialog::addProfile()
// TODO: browse all folders in AppData/Roaming/Ryzom // TODO: browse all folders in AppData/Roaming/Ryzom
} }
void CProfilesDialog::updateExecutableVersion(int index)
{
if (index < 0) return;
const CProfile &profile = m_model->getProfiles()[index];
QString executable = profile.executable;
// file empty, use default one
if (executable.isEmpty())
{
executable = CConfigFile::getInstance()->getInstallationDirectory() + "/" + profile.server + "/";
#if defined(Q_OS_WIN32)
executable += "ryzom_client_r.exe";
#elif defined(Q_OS_APPLE)
executable += "Ryzom.app/Contents/MacOS/Ryzom";
#else
executable += "ryzom_client";
#endif
}
// file doesn't exist
if (!QFile::exists(executable)) return;
// launch executable with --version argument
QProcess process;
process.setProcessChannelMode(QProcess::MergedChannels);
process.start(executable, QStringList() << "--version", QIODevice::ReadWrite);
if (!process.waitForStarted()) return;
QByteArray data;
// read all output
while (process.waitForReadyRead()) data.append(process.readAll());
// convert output to string
QString versionString = QString::fromUtf8(data);
// parse version from output
QRegExp reg("([A-Za-z0-1_.]+) ((DEV|FV) ([0-9.]+))");
if (reg.indexIn(versionString) > -1)
{
executableVersionLabel->setText(reg.cap(2));
}
}
void CProfilesDialog::onExecutableBrowseClicked() void CProfilesDialog::onExecutableBrowseClicked()
{ {
if (m_currentProfileIndex < 0) return; if (m_currentProfileIndex < 0) return;
@ -137,25 +190,5 @@ void CProfilesDialog::onExecutableBrowseClicked()
executablePathLabel->setText(QFileInfo(profile.executable).fileName()); executablePathLabel->setText(QFileInfo(profile.executable).fileName());
QProcess process; updateExecutableVersion(m_currentProfileIndex);
process.setProcessChannelMode(QProcess::MergedChannels);
process.start(profile.executable, QStringList() << "--version", QIODevice::ReadWrite);
if (!process.waitForStarted()) return;
QByteArray data;
while (process.waitForReadyRead()) data.append(process.readAll());
QString versionString = QString::fromUtf8(data);
QRegExp reg("([A-Za-z0-1_.]+) ((DEV|FV) ([0-9.]+))");
if (reg.indexIn(versionString) > -1)
{
executableVersionLabel->setText(reg.cap(2));
}
// ryzom_client_dev_d.exe DEV 0.12.0.7331 (built on 2016-02-25 22:16:50)
// Copyright (C) 2004-2016 Winchgate and The Ryzom Core Community
} }

View file

@ -48,6 +48,8 @@ private slots:
void deleteProfile(int index); void deleteProfile(int index);
void addProfile(); void addProfile();
void updateExecutableVersion(int index);
void onExecutableBrowseClicked(); void onExecutableBrowseClicked();
private: private: