summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Tanner <thosrtanner2@users.sourceforge.net>2015-05-10 12:35:52 +0100
committerTom Tanner <thosrtanner2@users.sourceforge.net>2015-05-10 12:35:52 +0100
commitcd68c9d53c75761a3766f93d4c6bbe3015cb89ce (patch)
tree68d329b8e7261648118401d13d728cb0313fac60 /src
parent65b64d111bd7926c995d64d4257162d84e75b86e (diff)
parentffb470a38035b2eb2cf63909572e8d56082dc83b (diff)
Merge from master
Diffstat (limited to 'src')
-rw-r--r--src/organizercore.cpp13
-rw-r--r--src/settings.cpp39
-rw-r--r--src/settings.h17
-rw-r--r--src/settingsdialog.ui73
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>