diff options
| author | Tom Tanner <thosrtanner2@users.sourceforge.net> | 2015-05-10 12:35:52 +0100 |
|---|---|---|
| committer | Tom Tanner <thosrtanner2@users.sourceforge.net> | 2015-05-10 12:35:52 +0100 |
| commit | cd68c9d53c75761a3766f93d4c6bbe3015cb89ce (patch) | |
| tree | 68d329b8e7261648118401d13d728cb0313fac60 /src | |
| parent | 65b64d111bd7926c995d64d4257162d84e75b86e (diff) | |
| parent | ffb470a38035b2eb2cf63909572e8d56082dc83b (diff) | |
Merge from master
Diffstat (limited to 'src')
| -rw-r--r-- | src/organizercore.cpp | 13 | ||||
| -rw-r--r-- | src/settings.cpp | 39 | ||||
| -rw-r--r-- | src/settings.h | 17 | ||||
| -rw-r--r-- | src/settingsdialog.ui | 73 |
4 files changed, 141 insertions, 1 deletions
diff --git a/src/organizercore.cpp b/src/organizercore.cpp index d8b4b951..38b01563 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -86,7 +86,18 @@ static void startSteam(QWidget *widget) QString exe = steamSettings.value("SteamExe", "").toString();
if (!exe.isEmpty()) {
QString temp = QString("\"%1\"").arg(exe);
- if (!QProcess::startDetached(temp)) {
+ //See if username and password supplied. If so, pass them into steam.
+ QStringList args;
+ QString username;
+ QString password;
+ if (Settings::instance().getSteamLogin(username, password)) {
+ args << "-login";
+ args << username;
+ if (password != "") {
+ args << password;
+ }
+ }
+ if (!QProcess::startDetached(temp, args)) {
reportError(QObject::tr("Failed to start \"%1\"").arg(temp));
} else {
QMessageBox::information(widget, QObject::tr("Waiting"),
diff --git a/src/settings.cpp b/src/settings.cpp index 54be183a..c5fa954c 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -257,6 +257,20 @@ bool Settings::getNexusLogin(QString &username, QString &password) const } } +bool Settings::getSteamLogin(QString &username, QString &password) const +{ + if (m_Settings.contains("Settings/steam_username")) { + username = m_Settings.value("Settings/steam_username", "").toString(); + if (m_Settings.contains("Settings/steam_password")) { + password = deObfuscate(m_Settings.value("Settings/steam_password", "").toString()); + } else { + password = ""; + } + return true; + } else { + return false; + } +} bool Settings::compactDownloads() const { return m_Settings.value("Settings/compact_downloads", false).toBool(); @@ -285,6 +299,20 @@ void Settings::setNexusLogin(QString username, QString password) m_Settings.setValue("Settings/nexus_password", obfuscate(password)); } +void Settings::setSteamLogin(QString username, QString password) +{ + if (username == "") { + m_Settings.remove("Settings/steam_username"); + password = ""; + } else { + m_Settings.setValue("Settings/steam_username", username); + } + if (password == "") { + m_Settings.remove("Settings/steam_password"); + } else { + m_Settings.setValue("Settings/steam_password", obfuscate(password)); + } +} LoadMechanism::EMechanism Settings::getLoadMechanism() const { @@ -538,6 +566,9 @@ void Settings::query(QWidget *parent) QCheckBox *hideUncheckedBox = dialog.findChild<QCheckBox*>("hideUncheckedBox"); QCheckBox *displayForeignBox = dialog.findChild<QCheckBox*>("displayForeignBox"); + // steam login page + QLineEdit *steamUserEdit = dialog.findChild<QLineEdit*>("steamUserEdit"); + QLineEdit *steamPassEdit = dialog.findChild<QLineEdit*>("steamPassEdit"); // // set up current settings @@ -605,6 +636,13 @@ void Settings::query(QWidget *parent) passwordEdit->setText(deObfuscate(m_Settings.value("Settings/nexus_password", "").toString())); } + if (m_Settings.contains("Settings/steam_username")) { + steamUserEdit->setText(m_Settings.value("Settings/steam_username", "").toString()); + if (m_Settings.contains("Settings/steam_password")) { + steamPassEdit->setText(deObfuscate(m_Settings.value("Settings/steam_password", "").toString())); + } + } + downloadDirEdit->setText(getDownloadDirectory()); modDirEdit->setText(getModDirectory()); cacheDirEdit->setText(getCacheDirectory()); @@ -734,6 +772,7 @@ void Settings::query(QWidget *parent) m_Settings.remove("Settings/nexus_username"); m_Settings.remove("Settings/nexus_password"); } + setSteamLogin(steamUserEdit->text(), steamPassEdit->text()); m_Settings.setValue("Settings/offline_mode", offlineBox->isChecked()); m_Settings.setValue("Settings/use_proxy", proxyBox->isChecked()); m_Settings.setValue("Settings/display_foreign", displayForeignBox->isChecked()); diff --git a/src/settings.h b/src/settings.h index 51e109c4..0818c2fb 100644 --- a/src/settings.h +++ b/src/settings.h @@ -143,6 +143,15 @@ public: bool getNexusLogin(QString &username, QString &password) const; /** + * @brief retrieve the login information for steam + * + * @param username (out) receives the user name for nexus + * @param password (out) received the password for nexus + * @return true if a username has been specified, false otherwise + **/ + bool getSteamLogin(QString &username, QString &password) const; + + /** * @return true if the user disabled internet features */ bool offlineMode() const; @@ -171,6 +180,14 @@ public: void setNexusLogin(QString username, QString password); /** + * @brief set the steam login information + * + * @param username username + * @param password password + */ + void setSteamLogin(QString username, QString password); + + /** * @return the load mechanism to be used **/ LoadMechanism::EMechanism getLoadMechanism() const; diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index f04e4d7a..f2ab3908 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -811,6 +811,79 @@ For the other games this is not a sufficient replacement for AI!</string> </item>
</layout>
</widget>
+ <widget class="QWidget" name="steamTab">
+ <attribute name="title">
+ <string>Steam</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_19">
+ <property name="text">
+ <string>Username</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="3">
+ <widget class="QLabel" name="label_21">
+ <property name="text">
+ <string>If you save your steam user ID and password here, they will be used when logging into steam. Note, however, your password will be stored unencrypted, so make sure your computer is secure.</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_20">
+ <property name="text">
+ <string>Password</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLineEdit" name="steamUserEdit"/>
+ </item>
+ <item row="1" column="2">
+ <widget class="QLineEdit" name="steamPassEdit">
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <spacer name="verticalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0">
+ <spacer name="verticalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Minimum</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
</widget>
</item>
<item>
|
