summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2015-05-12 19:00:41 +0200
committerTannin <devnull@localhost>2015-05-12 19:00:41 +0200
commit4c1155a6ab2d81ceeab5af78e20873917f3072d0 (patch)
treeac93d8d32ff4d50c96eb97e73b44a445de0270f5 /src
parent90365041f463f6c062b154e94fedbf75f96fb880 (diff)
parentcd68c9d53c75761a3766f93d4c6bbe3015cb89ce (diff)
Merge
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 9e6309cd..2d1febea 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 002db3ef..57e422bb 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
{
@@ -547,6 +575,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
@@ -614,6 +645,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());
@@ -743,6 +781,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>